10:05:31.823 [main] DEBUG io.netty.handler.ssl.BouncyCastlePemReader -- Parsed PEM object of type org.bouncycastle.asn1.pkcs.PrivateKeyInfo and assume key is not encrypted
10:05:31.831 [main] INFO org.opendaylight.gnmi.simulatordevice.impl.SimulatedGnmiDevice -- Combination of server certificate and key not provided, using default ones.
10:05:32.036 [mdsal-subscription-counters13] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@3ac71a17} unlocked
10:05:32.036 [mdsal-subscription-counters13] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@3ac71a17} readied
10:05:32.036 [mdsal-subscription-counters13] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@3ac71a17}
10:05:32.036 [mdsal-subscription-counters13] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@3ac71a17} completed successfully
10:05:32.036 [mdsal-subscription-counters13] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.063 [mdsal-subscription-counters17] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@200fa3f1} unlocked
10:05:32.063 [mdsal-subscription-counters17] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@200fa3f1} readied
10:05:32.063 [mdsal-subscription-counters17] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@200fa3f1}
10:05:32.063 [mdsal-subscription-counters17] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@200fa3f1} completed successfully
10:05:32.063 [mdsal-subscription-counters17] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} started phase SOURCE_PRE_LINKAGE
10:05:32.092 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase SOURCE_PRE_LINKAGE started
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} finished phase SOURCE_PRE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase SOURCE_PRE_LINKAGE finished
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} started phase SOURCE_LINKAGE
10:05:32.094 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} started phase SOURCE_LINKAGE
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase SOURCE_LINKAGE started
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} matched added key SourceIdentifier [openconfig-extensions@2020-06-16]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} matched added key SourceIdentifier [openconfig-yang-types@2021-03-02]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} found a pre-existing match: SourceIdentifier [openconfig-yang-types@2021-03-02]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-yang-types}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=gnmi-test-model} matched added key SourceIdentifier [gnmi-test-model]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} found a pre-existing match: SourceIdentifier [openconfig-yang-types@2021-03-02]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-yang-types}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} found a pre-existing match: SourceIdentifier [openconfig-yang-types@2021-03-02]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-yang-types}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-platform} matched added key SourceIdentifier [openconfig-platform@2021-01-18]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-platform-types} matched added key SourceIdentifier [openconfig-platform-types@2021-01-18]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-interfaces} found a pre-existing match: SourceIdentifier [openconfig-interfaces@2021-04-06]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-interfaces}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-interfaces} found a pre-existing match: SourceIdentifier [openconfig-interfaces@2021-04-06]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-interfaces}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=iana-if-type} matched added key SourceIdentifier [iana-if-type@2023-01-26]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} matched added key SourceIdentifier [openconfig-types@2019-04-16]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} matched added key SourceIdentifier [openconfig-types@2019-04-16]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} matched added key SourceIdentifier [openconfig-types@2019-04-16]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} matched added key SourceIdentifier [openconfig-types@2019-04-16]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} matched added key SourceIdentifier [openconfig-inet-types@2021-01-07]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} matched added key SourceIdentifier [openconfig-inet-types@2021-01-07]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} matched added key SourceIdentifier [openconfig-inet-types@2021-01-07]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} matched added key SourceIdentifier [openconfig-inet-types@2021-01-07]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-openflow-types} matched added key SourceIdentifier [openconfig-openflow-types@2020-06-30]
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=ietf-yang-types} found a pre-existing match: SourceIdentifier [ietf-yang-types@2013-07-15]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=ietf-yang-types}, refCount=0}
10:05:32.095 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=ietf-interfaces} matched added key SourceIdentifier [ietf-interfaces@2018-02-20]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=ietf-interfaces} matched added key SourceIdentifier [ietf-interfaces@2018-02-20]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} found a pre-existing match: SourceIdentifier [openconfig-inet-types@2021-01-07]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-inet-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} found a pre-existing match: SourceIdentifier [openconfig-types@2019-04-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=submodule} criterion LatestRevisionModule{moduleName=openconfig-aaa-tacacs} matched added key SourceIdentifier [openconfig-aaa-tacacs@2020-07-30]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-aaa-types} matched added key SourceIdentifier [openconfig-aaa-types@2018-11-21]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-aaa-types} matched added key SourceIdentifier [openconfig-aaa-types@2018-11-21]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-aaa-types} matched added key SourceIdentifier [openconfig-aaa-types@2018-11-21]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-alarm-types} matched added key SourceIdentifier [openconfig-alarm-types@2018-11-21]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-alarm-types} matched added key SourceIdentifier [openconfig-alarm-types@2018-11-21]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-if-types} matched added key SourceIdentifier [openconfig-if-types@2018-11-21]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-system-logging} found a pre-existing match: SourceIdentifier [openconfig-system-logging@2018-11-21]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-system-logging}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-interfaces} found a pre-existing match: SourceIdentifier [openconfig-interfaces@2021-04-06]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-interfaces}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=iana-if-type} found a pre-existing match: SourceIdentifier [iana-if-type@2023-01-26]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=iana-if-type}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} found a pre-existing match: SourceIdentifier [openconfig-yang-types@2021-03-02]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-yang-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-if-ethernet} matched added key SourceIdentifier [openconfig-if-ethernet@2021-06-09]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-vlan-types} found a pre-existing match: SourceIdentifier [openconfig-vlan-types@2020-06-30]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-vlan-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-interfaces} found a pre-existing match: SourceIdentifier [openconfig-interfaces@2021-04-06]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-interfaces}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-if-ethernet} found a pre-existing match: SourceIdentifier [openconfig-if-ethernet@2021-06-09]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-if-ethernet}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-if-aggregate} found a pre-existing match: SourceIdentifier [openconfig-if-aggregate@2020-05-01]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-if-aggregate}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=iana-if-type} found a pre-existing match: SourceIdentifier [iana-if-type@2023-01-26]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=iana-if-type}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} found a pre-existing match: SourceIdentifier [openconfig-inet-types@2021-01-07]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-inet-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-aaa-types} found a pre-existing match: SourceIdentifier [openconfig-aaa-types@2018-11-21]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-aaa-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} found a pre-existing match: SourceIdentifier [openconfig-types@2019-04-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} found a pre-existing match: SourceIdentifier [openconfig-yang-types@2021-03-02]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-yang-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=submodule} criterion LatestRevisionModule{moduleName=openconfig-aaa-radius} matched added key SourceIdentifier [openconfig-aaa-radius@2020-07-30]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-inet-types} found a pre-existing match: SourceIdentifier [openconfig-inet-types@2021-01-07]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-inet-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-yang-types} found a pre-existing match: SourceIdentifier [openconfig-yang-types@2021-03-02]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-yang-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-types} found a pre-existing match: SourceIdentifier [openconfig-types@2019-04-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-types}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-extensions} found a pre-existing match: SourceIdentifier [openconfig-extensions@2020-06-16]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-extensions}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-aaa} found a pre-existing match: SourceIdentifier [openconfig-aaa@2020-07-30]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-aaa}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-system-logging} found a pre-existing match: SourceIdentifier [openconfig-system-logging@2018-11-21]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-system-logging}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-system-terminal} found a pre-existing match: SourceIdentifier [openconfig-system-terminal@2018-11-21]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-system-terminal}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-procmon} found a pre-existing match: SourceIdentifier [openconfig-procmon@2019-03-15]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-procmon}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-alarms} found a pre-existing match: SourceIdentifier [openconfig-alarms@2019-07-09]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-alarms}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-messages} found a pre-existing match: SourceIdentifier [openconfig-messages@2018-08-13]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-messages}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-license} found a pre-existing match: SourceIdentifier [openconfig-license@2020-04-22]=RootStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)module}, argument=Unqualified{localName=openconfig-license}, refCount=0}
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.StatementContextBase -- Listener on ParserNamespace{name=module} criterion LatestRevisionModule{moduleName=openconfig-system} matched added key SourceIdentifier [openconfig-system@2020-04-13]
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} finished phase SOURCE_LINKAGE
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} finished phase SOURCE_LINKAGE
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} finished phase SOURCE_LINKAGE
10:05:32.096 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} finished phase SOURCE_LINKAGE
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase SOURCE_LINKAGE finished
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} started phase STATEMENT_DEFINITION
10:05:32.097 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase STATEMENT_DEFINITION started
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} finished phase STATEMENT_DEFINITION
10:05:32.102 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} finished phase STATEMENT_DEFINITION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase STATEMENT_DEFINITION finished
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} started phase FULL_DECLARATION
10:05:32.103 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase FULL_DECLARATION started
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.104 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(test:model)test-data] got key (test:model)test-data
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(test:model)test-data, (test:model)nested-container] got key (test:model)test-data
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.105 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(test:model)test-data] got key (test:model)test-data
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.106 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.107 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.108 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.109 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.110 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.111 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.112 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.113 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.114 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)operational as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6fc8a32b
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-version as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@51068b00
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)catalog-organization as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@166e8f13
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-atomic as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@6eaf50bd
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)posix-pattern as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@44d477b8
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)regexp-posix as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@216fbaa9
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)telemetry-on-change as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@439bbf80
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)origin as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@57a535f6
10:05:32.115 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} defined statement (http://openconfig.net/yang/openconfig-ext?revision=2020-06-16)openconfig-hashed-value as org.opendaylight.yangtools.yang.parser.rfc7950.stmt.extension.UnrecognizedStatementSupport@30abf10d
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(test:model)test-data, (test:model)nested-container] got key (test:model)nested-container
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} finished phase FULL_DECLARATION
10:05:32.116 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} finished phase FULL_DECLARATION
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase FULL_DECLARATION finished
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} started phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase EFFECTIVE_MODEL started
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-extensions]} finished phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-aug]} finished phase EFFECTIVE_MODEL
10:05:32.117 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-yang-types]} finished phase EFFECTIVE_MODEL
10:05:32.118 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-license]} finished phase EFFECTIVE_MODEL
10:05:32.118 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-terminal]} finished phase EFFECTIVE_MODEL
10:05:32.118 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-yang-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [iana-if-type]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-inet-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.AbstractIfFeatureStatementSupport -- Resolved all feature references in [(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)if-mib]
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.AbstractIfFeatureStatementSupport -- Resolved all feature references in [(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)if-mib]
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.AbstractIfFeatureStatementSupport -- Resolved all feature references in [(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)if-mib]
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.AbstractIfFeatureStatementSupport -- Resolved all feature references in [(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)if-mib]
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.rfc7950.stmt.if_feature.AbstractIfFeatureStatementSupport -- Resolved all feature references in [(urn:ietf:params:xml:ns:yang:ietf-interfaces?revision=2018-02-20)if-mib]
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [ietf-interfaces]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarm-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-types]} finished phase EFFECTIVE_MODEL
10:05:32.119 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-radius]} finished phase EFFECTIVE_MODEL
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)config] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)state] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface from (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface materialized
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces from (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces materialized
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface from (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface from (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface materialized
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface materialized
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)config] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces?revision=2021-04-06)config from (http://openconfig.net/yang/interfaces?revision=2021-04-06)config
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces?revision=2021-04-06)config materialized
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)config] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)config
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)state] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces?revision=2021-04-06)state from (http://openconfig.net/yang/interfaces?revision=2021-04-06)state
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces?revision=2021-04-06)state materialized
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces?revision=2021-04-06)state] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)state
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface] got key (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [gnmi-test-model]} finished phase EFFECTIVE_MODEL
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system-logging]} finished phase EFFECTIVE_MODEL
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform-types]} finished phase EFFECTIVE_MODEL
10:05:32.120 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation] got key (http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa-tacacs]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-messages]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config] got key (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state] got key (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet] got key (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config from (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config materialized
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config] got key (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state from (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state materialized
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, (http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state] got key (http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-ethernet]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-vlan]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-procmon]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/platform?revision=2021-01-18)components, (http://openconfig.net/yang/platform?revision=2021-01-18)component, (http://openconfig.net/yang/platform?revision=2021-01-18)state] got key (http://openconfig.net/yang/platform?revision=2021-01-18)components
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/platform?revision=2021-01-18)component from (http://openconfig.net/yang/platform?revision=2021-01-18)component
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/platform?revision=2021-01-18)component materialized
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/platform?revision=2021-01-18)components, (http://openconfig.net/yang/platform?revision=2021-01-18)component, (http://openconfig.net/yang/platform?revision=2021-01-18)state] got key (http://openconfig.net/yang/platform?revision=2021-01-18)component
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Materializing child (http://openconfig.net/yang/platform?revision=2021-01-18)state from (http://openconfig.net/yang/platform?revision=2021-01-18)state
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Child (http://openconfig.net/yang/platform?revision=2021-01-18)state materialized
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/platform?revision=2021-01-18)components, (http://openconfig.net/yang/platform?revision=2021-01-18)component, (http://openconfig.net/yang/platform?revision=2021-01-18)state] got key (http://openconfig.net/yang/platform?revision=2021-01-18)state
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-if-aggregate]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-alarms]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-interfaces]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-aaa]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-platform]} finished phase EFFECTIVE_MODEL
10:05:32.121 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.ModifierImpl -- Action for [(http://openconfig.net/yang/system?revision=2020-04-13)system] got key (http://openconfig.net/yang/system?revision=2020-04-13)system
10:05:32.122 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-openflow]} finished phase EFFECTIVE_MODEL
10:05:32.122 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.SourceSpecificContext -- Source YangStatementStreamSource{identifier=SourceIdentifier [openconfig-system]} finished phase EFFECTIVE_MODEL
10:05:32.122 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.BuildGlobalContext -- Global phase EFFECTIVE_MODEL finished
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)pid, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)name, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)args, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)start-time, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-usage-user, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-usage-system, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-utilization, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)memory-usage, refCount=1}
10:05:32.123 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)memory-utilization, refCount=1}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=6}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=6}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=6}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=1}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=1}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=1}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=5}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=5}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=5}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=4}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=4}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=4}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=3}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=3}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=3}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=2}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=2}
10:05:32.124 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=2}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)stat-interval-state, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-max-time, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 7 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg-min-max-instant-stats-pct, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)procmon-processes-top, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)pid, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)name, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)args, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)start-time, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-usage-user, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-usage-system, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-utilization, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)memory-usage, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)memory-utilization, refCount=SWEEPING}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)id, refCount=1}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)resource, refCount=1}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)text, refCount=1}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)time-created, refCount=1}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)severity, refCount=1}
10:05:32.125 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)type-id, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=2}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)value, refCount=2}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)value, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)configurable, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=2}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=SWEEPING}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=SWEEPING}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=SWEEPING}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)instant, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)avg, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)min, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)max, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)interval, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)min-time, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)max-time, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-status, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-threshold, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-severity, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=2}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)type, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)id, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)location, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)description, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)mfg-name, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)mfg-date, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)hardware-version, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)firmware-version, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)software-version, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)serial-no, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)part-no, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)removable, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)oper-status, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)empty, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)parent, refCount=1}
10:05:32.126 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-status, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-threshold, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-severity, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)instant, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)avg, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)min, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)max, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)interval, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)min-time, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)max-time, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)available, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)utilized, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)allocated-power, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)used-power, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/platform?revision=2021-01-18)name]}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)value}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=0}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)value}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)configurable}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/platform?revision=2021-01-18)name]}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=0}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/platform?revision=2021-01-18)name]}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=0}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)type}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)id}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)location}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)description}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)mfg-name}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)mfg-date}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)hardware-version}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)firmware-version}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)software-version}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)serial-no}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)part-no}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)removable}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)oper-status}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)empty}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)parent}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)allocated-power}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)used-power}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)memory}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)temperature}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)equipment-failure, refCount=1}
10:05:32.127 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)equipment-mismatch, refCount=1}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)chassis}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)port}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)power-supply}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)fan}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)fabric}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)storage}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)cpu}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)integrated-circuit}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)backplane}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/platform?revision=2021-01-18)software-module}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)instant, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)avg, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)min, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform-types?revision=2021-01-18)max, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)value, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)configurable, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)property, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)properties, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)subcomponent, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)subcomponents, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)type, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)id, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)location, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)description, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)mfg-name, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)mfg-date, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)hardware-version, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)firmware-version, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)software-version, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)serial-no, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)part-no, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)removable, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)oper-status, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)empty, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)parent, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-status, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-threshold, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)alarm-severity, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)allocated-power, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)used-power, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)temperature, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)available, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)utilized, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)memory, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)chassis, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)port, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)power-supply, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)fan, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)fabric, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)storage, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)cpu, refCount=SWEEPING}
10:05:32.128 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)integrated-circuit, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)backplane, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)software-module, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)name, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)config, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 7 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)state, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)component, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/platform?revision=2021-01-18)components, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)id, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)resource, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)text, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)time-created, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)severity, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)type-id, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)alarms-top, refCount=SWEEPING}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(test:aug)name]}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(test:aug)name, refCount=1}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(test:aug)name, refCount=1}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(test:aug)type, refCount=1}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(test:aug)mtu, refCount=1}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(test:aug)interface, refCount=1}
10:05:32.129 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(test:model)augmented-data, refCount=1}
10:05:32.130 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=2}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data, refCount=2}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)active, refCount=2}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)active, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)description, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)issue-date, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)expiration-date, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)in-use, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)expired, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)valid, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/license?revision=2020-04-22)license-id]}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)active}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)config, refCount=0}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)active}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)description}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)issue-date}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)expiration-date}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)in-use}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)expired}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/license?revision=2020-04-22)valid}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)active, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)description, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)issue-date, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)expiration-date, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)in-use, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)expired, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)valid, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)config, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)state, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)licenses, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-top, refCount=SWEEPING}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, refCount=2}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface, refCount=2}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=1}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=0}
10:05:32.131 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)up, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)down, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)up, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)down, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=0}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-change, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)management, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)cpu, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-octets, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-broadcast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-multicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-discards, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-errors, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unknown-protos, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-fcs-errors, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-octets, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-unicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-broadcast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-multicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-discards, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-errors, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)carrier-transitions, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-clear, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index, refCount=2}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-change, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)management, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)cpu, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-octets, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-broadcast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-multicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-discards, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-errors, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unknown-protos, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-fcs-errors, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-octets, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-unicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-broadcast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-multicast-pkts, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-discards, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-errors, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)carrier-transitions, refCount=1}
10:05:32.132 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-clear, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=2}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, refCount=2}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, refCount=2}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, refCount=2}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-change, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)management, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)cpu, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-octets, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unicast-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-broadcast-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-multicast-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-discards, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-errors, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unknown-protos, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-fcs-errors, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-octets, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-unicast-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-broadcast-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-multicast-pkts, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-discards, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-errors, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)carrier-transitions, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-clear, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)up}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)down}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=0}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)up}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)down}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/interfaces?revision=2021-04-06)index]}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=0}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-change}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)management}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)cpu}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)counters}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/interfaces?revision=2021-04-06)name]}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=1}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description}
10:05:32.133 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=1}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-change}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)management}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)cpu}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)counters}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=1}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/interfaces?revision=2021-04-06)index]}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config}
10:05:32.134 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)counters}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-ids, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-ids, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-ids, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-ids, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-ids, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-ids, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-high-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-low-vlan-id, refCount=1}
10:05:32.135 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-high-vlan-id, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-stack-action, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-stack-action, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-stack-action, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-stack-action, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=1}
10:05:32.136 [mdsal-subscription-counters14] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@4373df7f} unlocked
10:05:32.136 [mdsal-subscription-counters14] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@4373df7f} readied
10:05:32.136 [mdsal-subscription-counters14] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@4373df7f}
10:05:32.136 [mdsal-subscription-counters14] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@4373df7f} completed successfully
10:05:32.136 [mdsal-subscription-counters14] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-speed, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)member, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)trunk-vlans, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, refCount=1}
10:05:32.136 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)trunk-vlans, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)mac-address, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)standalone-link-training, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)duplex-mode, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)mac-address, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)standalone-link-training, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)duplex-mode, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)hw-mac-address, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-duplex-mode, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-port-speed, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-mac-control-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-mac-pause-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-oversize-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-undersize-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-jabber-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-fragment-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-8021q-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-crc-errors, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-block-errors, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-carrier-errors, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-interrupted-tx, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-late-collision, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-mac-errors-rx, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-single-collision, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-symbol-error, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-maxsize-exceeded, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-mac-control-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-mac-pause-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-8021q-frames, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-mac-errors-tx, refCount=1}
10:05:32.137 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)trunk-vlans, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)trunk-vlans, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan, refCount=1}
10:05:32.138 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan, refCount=1}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface-ref, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)base-interface-ref-state, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)description, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)up, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)down, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)hold-time, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-change, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)management, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)cpu, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-octets, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unicast-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-broadcast-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-multicast-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-discards, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-errors, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-unknown-protos, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-fcs-errors, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-octets, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-unicast-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-broadcast-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-multicast-pkts, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-discards, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-errors, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)carrier-transitions, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)last-clear, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)counters, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)index, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterface, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)subinterfaces, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 5 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, refCount=SWEEPING}
10:05:32.141 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, refCount=SWEEPING}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-opens, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-closes, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-aborts, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-failures, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-timeouts, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-sent, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-received, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)errors-received, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts, refCount=2}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=1}
10:05:32.142 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retried-access-requests, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)access-accepts, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)access-rejects, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout-access-requests, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)counters}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)address]}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-opens}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-closes}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-aborts}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-failures}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-timeouts}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-sent}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-received}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)errors-received}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)counters}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-username, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role, refCount=2}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key, refCount=1}
10:05:32.143 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=2}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record, refCount=2}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type]}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=2}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type]}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=1}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type}
10:05:32.144 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method, refCount=2}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method, refCount=1}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-username}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)username]}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=1}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)name]}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=1}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=0}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)counters}
10:05:32.145 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retried-access-requests, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)access-accepts, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)access-rejects, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout-access-requests, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)counters, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)radius, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)tacacs, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)server-group, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)server-groups, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-opens, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-closes, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-aborts, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-failures, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-timeouts, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-sent, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-received, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)errors-received, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)server, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)servers, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-username, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-user, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)user, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)users, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)events, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.146 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)events, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)aaa-top, refCount=SWEEPING}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=2}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=2}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=1}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=1}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, (http://openconfig.net/yang/system/logging?revision=2018-11-21)severity]}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=1}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=1}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=0}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=2}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address, refCount=2}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port, refCount=2}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=1}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address, refCount=1}
10:05:32.147 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port, refCount=1}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, (http://openconfig.net/yang/system/logging?revision=2018-11-21)severity]}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=1}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=1}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=0}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=1}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state, refCount=1}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system/logging?revision=2018-11-21)host]}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=1}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=0}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)selector, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)selectors, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)console, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-server, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-servers, refCount=SWEEPING}
10:05:32.148 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)logging-top, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=4}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=4}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=4}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=3}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=3}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=3}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=2}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=2}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=2}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=2}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)protocol-version, refCount=2}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)protocol-version, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=2}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)protocol-version, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)system-ssh-server-top, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=SWEEPING}
10:05:32.149 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)grouping}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)system-telnet-server-top, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)mac-address, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)standalone-link-training, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)duplex-mode, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-mac-control-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-mac-pause-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-oversize-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-undersize-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-jabber-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-fragment-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-8021q-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-crc-errors, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-block-errors, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-carrier-errors, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-interrupted-tx, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-late-collision, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-mac-errors-rx, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-single-collision, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-symbol-error, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)in-maxsize-exceeded, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-mac-control-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-mac-pause-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-8021q-frames, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)out-mac-errors-tx, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)hw-mac-address, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-duplex-mode, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-port-speed, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)counters, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-speed, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)member, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)config, refCount=SWEEPING}
10:05:32.151 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)state, refCount=SWEEPING}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation, refCount=SWEEPING}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, refCount=SWEEPING}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface, refCount=2}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)connected, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id]}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, refCount=0}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)connected}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/openflow?revision=2018-11-21)name]}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=1}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, refCount=0}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config}
10:05:32.152 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)state}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/openflow?revision=2018-11-21)name]}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)state}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)state}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)timezone-name, refCount=2}
10:05:32.153 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)timezone-name, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)alias, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv4-address, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv6-address, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)alias, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv4-address, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv6-address, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)port, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)port, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)search, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)search, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system?revision=2020-04-13)address]}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)address}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)port}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)address}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)port}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system?revision=2020-04-13)hostname]}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)alias}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv4-address}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv6-address}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)alias}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv4-address}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv6-address}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)port, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)version, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)association-type, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)iburst, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)prefer, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)port, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)version, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)association-type, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)iburst, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)prefer, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)stratum, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)root-delay, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)root-dispersion, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)offset, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)poll-interval, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-type, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-value, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-type, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-value, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)enabled, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-source-address, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)enable-ntp-auth, refCount=2}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)enabled, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-source-address, refCount=1}
10:05:32.154 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)enable-ntp-auth, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)auth-mismatch, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system?revision=2020-04-13)key-id]}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-type}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-value}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-type}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-value}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system?revision=2020-04-13)address]}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)address}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)port}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)version}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)association-type}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)iburst}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)prefer}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)address}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)port}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)version}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)association-type}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)iburst}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)prefer}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)stratum}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)root-delay}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)root-dispersion}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)offset}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)poll-interval}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)physical, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)reserved, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=8}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=7}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=6}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=5}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=4}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=3}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=2}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)instant, refCount=SWEEPING}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)avg, refCount=SWEEPING}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min, refCount=SWEEPING}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max, refCount=SWEEPING}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)interval, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)min-time, refCount=1}
10:05:32.155 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openconfig-types?revision=2019-04-16)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)index, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)instant, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)avg, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)interval, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)min-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)max-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=2}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)domain-name, refCount=2}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)login-banner, refCount=2}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)motd-banner, refCount=2}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)domain-name, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)login-banner, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)motd-banner, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)current-datetime, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)boot-time, refCount=1}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)timezone-name}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)timezone-name}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)search}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.156 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: SlimLeafListEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)search}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)enabled}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-source-address}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)enable-ntp-auth}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)enabled}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-source-address}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)enable-ntp-auth}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)auth-mismatch}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)ssh-server, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 7 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)protocol-version, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 9 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)protocol-version, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)telnet-server, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 6 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 8 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)enable, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)timeout, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)rate-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/terminal?revision=2018-11-21)session-limit, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 5 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)logging, refCount=SWEEPING}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)config, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)state, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, (http://openconfig.net/yang/system/logging?revision=2018-11-21)severity], refCount=2}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=2}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=2}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/system/logging?revision=2018-11-21)host], refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)host, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)source-address, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)remote-port, refCount=1}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, (http://openconfig.net/yang/system/logging?revision=2018-11-21)severity], refCount=2}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=2}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=2}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)facility, refCount=3}
10:05:32.157 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/logging?revision=2018-11-21)severity, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 11 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)aaa, refCount=SWEEPING}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)config, refCount=SWEEPING}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)state, refCount=SWEEPING}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)accounting-method, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type], refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)record, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authorization-method, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type], refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)event-type, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)authentication-method, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-username, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)admin-password-hashed, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)username], refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)username, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)password-hashed, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)ssh-key, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)role, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)name], refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)type, refCount=1}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/aaa?revision=2020-07-30)address], refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=2}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-opens, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-closes, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-aborts, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-failures, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)connection-timeouts, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-sent, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)messages-received, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)errors-received, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)name, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)address, refCount=3}
10:05:32.158 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)auth-port, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)acct-port, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retransmit-attempts, refCount=3}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)retried-access-requests, refCount=7}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)access-accepts, refCount=7}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)access-rejects, refCount=7}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)timeout-access-requests, refCount=7}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)port, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)secret-key-hashed, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/aaa?revision=2020-07-30)source-address, refCount=5}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)physical}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)reserved}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=0}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/system?revision=2020-04-13)index]}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)index, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)index}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)total}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)user}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)kernel}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)nice}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)idle}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)wait}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)hardware-interrupt}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)software-interrupt}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=0}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)processes, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 5 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)process, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/system/procmon?revision=2019-03-15)pid], refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)pid, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)pid, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 12 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)state, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)pid, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)name, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)args, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)start-time, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-usage-user, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-usage-system, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)cpu-utilization, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)memory-usage, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system/procmon?revision=2019-03-15)memory-utilization, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)alarms, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 5 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)alarm, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/alarms?revision=2019-07-09)id], refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)id, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)id, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)config, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)config, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 10 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)state, refCount=SWEEPING}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)id, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)resource, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)text, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)time-created, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)severity, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/alarms?revision=2019-07-09)type-id, refCount=1}
10:05:32.159 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity, refCount=2}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)msg, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)priority, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)app-name, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)procid, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)msgid, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=2}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled, refCount=2}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/messages?revision=2018-08-13)service]}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)config, refCount=0}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)state, refCount=0}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)msg, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)priority, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)app-name, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)procid, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)msgid, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/messages?revision=2018-08-13)service], refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license, refCount=SWEEPING}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)key}, argument=[(http://openconfig.net/yang/license?revision=2020-04-22)license-id], refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)active, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-id, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)license-data, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)active, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)description, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)issue-date, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)expiration-date, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)in-use, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)expired, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/license?revision=2020-04-22)valid, refCount=1}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)domain-name}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)login-banner}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)motd-banner}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=0}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)domain-name}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)login-banner}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)motd-banner}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)current-datetime}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)boot-time}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.160 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)message}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)total}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)user}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)kernel}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)nice}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)idle}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)wait}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)hardware-interrupt}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)software-interrupt}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.161 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)counters}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)config}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/system?revision=2020-04-13)state}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)datapath-id, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)failure-mode, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)backoff-interval, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)max-backoff, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)inactivity-probe, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)datapath-id, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)failure-mode, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)backoff-interval, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)max-backoff, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)inactivity-probe, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/openflow?revision=2018-11-21)name]}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=1}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=4}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=4}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing empty: EmptyLocalKeyEffectiveStatement{argument=[(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id]}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=5}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)connected, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id, refCount=7}
10:05:32.162 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: InferredStatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface, refCount=7}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)config, refCount=0}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing context-independent: EmptyLeafEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)message}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)config}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: EmptyContainerEffectiveStatement{argument=(http://openconfig.net/yang/messages?revision=2018-08-13)state}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)severity, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)msg, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)priority, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)app-name, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)procid, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)msgid, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)message, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)enabled, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)service, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)debug-service, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)debug-entries, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/messages?revision=2018-08-13)messages, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)timezone-name, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)clock, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)domain-name, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)login-banner, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)motd-banner, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)current-datetime, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)boot-time, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)search, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)port, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)alias, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv4-address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ipv6-address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hostname, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)host-entry, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)host-entries, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)server, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)servers, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)dns, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)port, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)version, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)association-type, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)iburst, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)prefer, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)stratum, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)root-delay, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)root-dispersion, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)offset, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)poll-interval, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)server, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)servers, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-type, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-value, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)key-id, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-key, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-keys, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)enabled, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp-source-address, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)enable-ntp-auth, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)auth-mismatch, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)ntp, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)physical, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)reserved, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)memory, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)index, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)total, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)user, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)kernel, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)nice, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)idle, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)wait, refCount=SWEEPING}
10:05:32.163 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)hardware-interrupt, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)software-interrupt, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)index, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)cpu, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)cpus, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)config, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)state, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 14 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/system?revision=2020-04-13)system, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)name, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)controller, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)controllers, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)priority, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)address, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)port, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)transport, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)certificate-id, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)source-interface, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)connected, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)aux-id, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)connection, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)connections, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)datapath-id, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)failure-mode, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)backoff-interval, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)max-backoff, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)inactivity-probe, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)state, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)agent, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/openflow?revision=2018-11-21)openflow, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, refCount=1}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, refCount=SWEEPING}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=2}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)name, refCount=2}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)status, refCount=2}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=1}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)name, refCount=1}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)status, refCount=1}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing after substatement check: RegularContainerEffectiveStatement{argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state}
10:05:32.164 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.InferredStatementContext -- Reusing unchanged substatements of: SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)member, refCount=0}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)name, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)status, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)member, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)members, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)trunk-vlans, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-ids, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)low-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)high-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-ids, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-ids, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-low-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-high-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf-list}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-low-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-high-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-low-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)inner-high-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-low-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)outer-high-vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)single-tagged, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)single-tagged-list, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)single-tagged-range, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)double-tagged, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)double-tagged-inner-list, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)double-tagged-outer-list, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)double-tagged-inner-range, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)double-tagged-outer-range, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)double-tagged-inner-outer-range, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)match, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-stack-action, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)ingress-mapping, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-stack-action, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan-id, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)tpid, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 3 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)egress-mapping, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)leaf}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)vlan, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 2 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 4 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, refCount=SWEEPING}
10:05:32.165 [main] DEBUG org.opendaylight.yangtools.yang.parser.stmt.reactor.OriginalStmtCtx -- 1 children left to sweep from SubstatementContext{definition=StatementDefinitionContext{statement=(urn:ietf:params:xml:ns:yang:yin:1)container}, argument=(http://openconfig.net/yang/vlan?revision=2019-04-16)routed-vlan, refCount=SWEEPING}
10:05:32.166 [main] INFO org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- ThreadFactory created: DOM-CFG-DCL
10:05:32.166 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Following schema contexts will be attempted EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-test-aug}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-test-model}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-if-type}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarm-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarms}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-extensions}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-aggregate}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-ethernet}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-license}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-messages}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-procmon}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-logging}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-terminal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-yang-types}}]}
10:05:32.166 [main] INFO org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- ThreadFactory created: DOM-OPER-DCL
10:05:32.166 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Following schema contexts will be attempted EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-test-aug}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-test-model}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-if-type}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarm-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarms}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-extensions}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-aggregate}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-ethernet}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-license}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-messages}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-procmon}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-logging}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-terminal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-yang-types}}]}
10:05:32.166 [main] INFO org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- ThreadFactory created: DOM-STATE-DCL
10:05:32.166 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Following schema contexts will be attempted EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-test-aug}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-test-model}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-if-type}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarm-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarms}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-extensions}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-aggregate}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-ethernet}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-license}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-messages}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-procmon}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-logging}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-terminal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-yang-types}}]}
10:05:32.169 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: DOM-CFG-0 allocated with snapshot Version[350a5a3f]
10:05:32.169 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: DOM-CFG-0 Write: /(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces:ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, body=[ImmutableSystemMapNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, body=UnmodifiableCollection{[ImmutableMapEntryNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface[{(http://openconfig.net/yang/interfaces?revision=2021-04-06)name=eth3}], body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, body=1500}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=eth3}]}, ImmutableMapEntryNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface[{(http://openconfig.net/yang/interfaces?revision=2021-04-06)name=br0}], body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, body=5}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, body=LACP}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=54}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=34}]}]}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=br0}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, body=100}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, body=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)SPEED_10MB}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, body=true}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=45}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=37}]}]}]}]}]}}]}
10:05:32.169 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: DOM-CFG-0 : Ready
10:05:32.169 [main] DEBUG org.opendaylight.yangtools.yang.data.spi.node.MandatoryLeafEnforcer -- Adding mandatory child /(http://openconfig.net/yang/interfaces?revision=2021-04-06)config/type
10:05:32.169 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: DOM-CFG-0 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.169 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: DOM-CFG-0 can be committed
10:05:32.170 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from SimpleContainerNode{version=Version[350a5a3f], data=ImmutableContainerNode{name=(urn:ietf:params:xml:ns:netconf:base:1.0)data, body=[]}} to MaterializedContainerNode{version=Version[350a5a3f], subtreeVersion=Version[147a2388], children={(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces=SimpleContainerNode{version=Version[147a2388], data=ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, body=[ImmutableSystemMapNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, body=UnmodifiableCollection{[ImmutableMapEntryNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface[{(http://openconfig.net/yang/interfaces?revision=2021-04-06)name=eth3}], body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, body=1500}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=eth3}]}, ImmutableMapEntryNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface[{(http://openconfig.net/yang/interfaces?revision=2021-04-06)name=br0}], body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, body=5}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, body=LACP}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=54}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=34}]}]}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=br0}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, body=100}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, body=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)SPEED_10MB}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, body=true}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=45}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=37}]}]}]}]}]}}]}}}}
10:05:32.170 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: DOM-CFG-0 : Closed after submit
10:05:32.171 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: DOM-STATE-0 allocated with snapshot Version[619a949]
10:05:32.171 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: DOM-STATE-0 Write: /:ImmutableContainerNode{name=(urn:ietf:params:xml:ns:netconf:base:1.0)data, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)system, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)alarms, body=[ImmutableSystemMapNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)alarm, body=[ImmutableMapEntryNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)alarm[{(http://openconfig.net/yang/system?revision=2020-04-13)id=1}], body=[ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)id, body=1}, ImmutableContainerNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)id, body=1}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)time-created, body=1597765771184}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)text, body=alarm-text}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)resource, body=res}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)severity, body=(http://openconfig.net/yang/alarms/types?revision=2018-11-21)MINOR}]}]}]}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)openflow, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)agent, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)backoff-interval, body=5}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)datapath-id, body=00:16:3e:00:00:00:00:00}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)inactivity-probe, body=10}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)failure-mode, body=SECURE}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)max-backoff, body=10}]}]}]}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, body=[ImmutableSystemMapNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, body=[ImmutableMapEntryNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface[{(http://openconfig.net/yang/interfaces?revision=2021-04-06)name=br0}], body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex, body=1}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, body=100}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status, body=DOWN}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)counters, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-pkts, body=101}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-octets, body=105}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-pkts, body=106}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-octets, body=100}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-discards, body=107}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-fcs-errors, body=104}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-errors, body=108}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-errors, body=103}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-discards, body=102}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=br0}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status, body=UP}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, body=LACP}, ImmutableSystemLeafSetNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)member, body=[ImmutableLeafSetEntryNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)member[br0], body=br0}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-speed, body=20}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, body=5}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=54}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=34}]}]}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=br0}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, body=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)SPEED_10MB}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-duplex-mode, body=FULL}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-port-speed, body=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)SPEED_10MB}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)hw-mac-address, body=00:00:0A:BB:28:FC}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=45}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=37}]}]}]}]}]}]}]}
10:05:32.172 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: DOM-STATE-0 : Ready
10:05:32.172 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: DOM-STATE-0 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.172 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: DOM-STATE-0 can be committed
10:05:32.172 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from SimpleContainerNode{version=Version[619a949], data=ImmutableContainerNode{name=(urn:ietf:params:xml:ns:netconf:base:1.0)data, body=[]}} to SimpleContainerNode{version=Version[14a220a0], data=ImmutableContainerNode{name=(urn:ietf:params:xml:ns:netconf:base:1.0)data, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)system, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)alarms, body=[ImmutableSystemMapNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)alarm, body=[ImmutableMapEntryNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)alarm[{(http://openconfig.net/yang/system?revision=2020-04-13)id=1}], body=[ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)id, body=1}, ImmutableContainerNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)id, body=1}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)time-created, body=1597765771184}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)text, body=alarm-text}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)resource, body=res}, ImmutableLeafNode{name=(http://openconfig.net/yang/system?revision=2020-04-13)severity, body=(http://openconfig.net/yang/alarms/types?revision=2018-11-21)MINOR}]}]}]}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)openflow, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)agent, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)backoff-interval, body=5}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)datapath-id, body=00:16:3e:00:00:00:00:00}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)inactivity-probe, body=10}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)failure-mode, body=SECURE}, ImmutableLeafNode{name=(http://openconfig.net/yang/openflow?revision=2018-11-21)max-backoff, body=10}]}]}]}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interfaces, body=[ImmutableSystemMapNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface, body=[ImmutableMapEntryNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)interface[{(http://openconfig.net/yang/interfaces?revision=2021-04-06)name=br0}], body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)ifindex, body=1}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)mtu, body=100}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)oper-status, body=DOWN}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)counters, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-pkts, body=101}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-octets, body=105}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-pkts, body=106}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-octets, body=100}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-discards, body=107}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-fcs-errors, body=104}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)out-errors, body=108}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-errors, body=103}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)in-discards, body=102}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=br0}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=false}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)logical, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)admin-status, body=UP}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregation, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-type, body=LACP}, ImmutableSystemLeafSetNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)member, body=[ImmutableLeafSetEntryNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)member[br0], body=br0}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)lag-speed, body=20}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)min-links, body=5}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=54}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=34}]}]}]}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)name, body=br0}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)config, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)enabled, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)type, body=(http://openconfig.net/yang/openconfig-if-types?revision=2018-11-21)IF_ETHERNET}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces?revision=2021-04-06)loopback-mode, body=false}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)ethernet, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)port-speed, body=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)SPEED_10MB}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-duplex-mode, body=FULL}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)enable-flow-control, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)negotiated-port-speed, body=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)SPEED_10MB}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)auto-negotiate, body=true}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/aggregate?revision=2020-05-01)aggregate-id, body=admin}, ImmutableLeafNode{name=(http://openconfig.net/yang/interfaces/ethernet?revision=2021-06-09)hw-mac-address, body=00:00:0A:BB:28:FC}]}, ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)switched-vlan, body=[ImmutableContainerNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)state, body=[ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)access-vlan, body=45}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)interface-mode, body=ACCESS}, ImmutableLeafNode{name=(http://openconfig.net/yang/vlan?revision=2019-04-16)native-vlan, body=37}]}]}]}]}]}]}]}}
10:05:32.172 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: DOM-STATE-0 : Closed after submit
10:05:32.172 [main] INFO org.opendaylight.gnmi.simulatordevice.impl.SimulatedGnmiDevice -- Starting gNMI device simulator on 127.0.0.1:43453 ...
10:05:32.177 [main] INFO org.opendaylight.gnmi.simulatordevice.impl.SimulatedGnmiDevice -- gNMI device simulator is up and running
10:05:32.178 [main] INFO org.opendaylight.mdsal.dom.broker.DOMNotificationRouter -- DOM Notification Router started
10:05:32.179 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Following schema contexts will be attempted EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-app-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-mdsal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-rpc}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-encrypt-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-password-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=augmented-jukebox}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=example-jukebox}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-certificate-storage}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-force-capabilities}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-yang-storage}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-crypt-hash}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-if-type}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-tls-cipher-suite-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-crypto-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-http-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-http-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ip}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-keystore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-acm}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-with-defaults}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-network-instance}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-monitoring}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-subscribed-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-subscribed-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-truststore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-x509-cert-to-name}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-patch}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-schema-mount}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=network-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-device-notification}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarm-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarms}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-extensions}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-aggregate}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-ethernet}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-license}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-messages}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-procmon}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-logging}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-terminal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote-augment}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=yang-ext}}]}
10:05:32.179 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Following schema contexts will be attempted EffectiveSchemaContext{modules=[ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-app-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-mdsal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-cert-rpc}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-encrypt-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=aaa-password-service-config}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=augmented-jukebox}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=example-jukebox}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-certificate-storage}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-force-capabilities}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=gnmi-yang-storage}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-crypt-hash}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-if-type}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=iana-tls-cipher-suite-algs}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-crypto-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-http-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-http-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-ip}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-keystore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-acm}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-netconf-with-defaults}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-network-instance}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-monitoring}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-restconf-subscribed-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-subscribed-notifications}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tcp-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-client}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-common}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-tls-server}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-truststore}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-x509-cert-to-name}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-patch}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-schema-mount}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=ietf-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=network-topology}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=odl-device-notification}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-aaa-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarm-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-alarms}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-extensions}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-aggregate}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-ethernet}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-if-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-inet-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-interfaces}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-license}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-messages}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-openflow-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-platform-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-procmon}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-logging}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-system-terminal}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-vlan-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=openconfig-yang-types}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=sal-remote-augment}}, ModuleEffectiveStatementImpl{argument=Unqualified{localName=yang-ext}}]}
10:05:32.180 [main] INFO org.opendaylight.gnmi.test.gnmi.rcgnmi.GnmiITBase -- RESTCONF Server starting on: 127.0.0.1:33119
10:05:32.180 [main] INFO org.opendaylight.mdsal.dom.broker.DOMRpcRouter -- DOM RPC/Action router started
10:05:32.180 [main] INFO org.opendaylight.mdsal.dom.broker.DOMNotificationRouter -- DOM Notification Router started
10:05:32.196 [main] INFO org.opendaylight.aaa.encrypt.impl.AAAEncryptionServiceImpl -- AAAEncryptionService activated
10:05:32.197 [main] INFO org.opendaylight.gnmi.southbound.yangmodule.GnmiSouthboundModule -- Starting ODL gNMI Southbound Component
10:05:32.197 [main] INFO org.opendaylight.gnmi.southbound.provider.GnmiSouthboundProvider -- gNMI init started
10:05:32.198 [main] INFO org.opendaylight.gnmi.southbound.provider.GnmiSouthboundProvider -- Loading provided initial yang loaders
10:05:32.200 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model gnmi-test-aug with version 1.0.0 to operational datastore
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-0 allocated with snapshot Version[7400397b]
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-0 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-0 : Ready
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-0 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-0 is submitted for execution.
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-0: canCommit Started
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-0 can be committed
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-0: preCommit Started
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-0: doCommit Started
10:05:32.201 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from SimpleContainerNode{version=Version[7400397b], data=ImmutableContainerNode{name=(urn:ietf:params:xml:ns:netconf:base:1.0)data, body=[]}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[40300c67], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=SimpleContainerNode{version=Version[40300c67], data=ImmutableContainerNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models, body=[ImmutableSystemMapNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model, body=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}]}}}}
10:05:32.201 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-0: doCommit completed
10:05:32.201 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByPathYangLoaderService -- Loaded yang model gnmi-test-aug with version 1.0.0
10:05:32.204 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model gnmi-test-model with version 1.0.0 to operational datastore
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-1 allocated with snapshot Version[40300c67]
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-1 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-1 : Ready
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-1 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-1 is submitted for execution.
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-1: canCommit Started
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-1 can be committed
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-1: preCommit Started
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-1: doCommit Started
10:05:32.205 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[40300c67], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=SimpleContainerNode{version=Version[40300c67], data=ImmutableContainerNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models, body=[ImmutableSystemMapNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model, body=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}]}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[68496588], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[68496588], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[68496588], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.205 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-1: doCommit completed
10:05:32.205 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByPathYangLoaderService -- Loaded yang model gnmi-test-model with version 1.0.0
10:05:32.210 [mdsal-subscription-counters1] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6d559fb0} unlocked
10:05:32.210 [mdsal-subscription-counters1] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6d559fb0} readied
10:05:32.210 [mdsal-subscription-counters1] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6d559fb0}
10:05:32.210 [mdsal-subscription-counters1] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6d559fb0} completed successfully
10:05:32.210 [mdsal-subscription-counters1] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.216 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-types with version 0.6.0 to operational datastore
10:05:32.221 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-2 allocated with snapshot Version[68496588]
10:05:32.221 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-2 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}
10:05:32.221 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-2 : Ready
10:05:32.221 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-2 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.221 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-2 is submitted for execution.
10:05:32.221 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-2: canCommit Started
10:05:32.222 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-2 can be committed
10:05:32.222 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-2: preCommit Started
10:05:32.222 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-2: doCommit Started
10:05:32.222 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[68496588], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[68496588], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[68496588], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[78f0020a], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[78f0020a], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[78f0020a], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.222 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-2: doCommit completed
10:05:32.222 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-types with version 0.6.0
10:05:32.240 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-aaa with version 0.5.0 to operational datastore
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-3 allocated with snapshot Version[78f0020a]
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-3 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-3 : Ready
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-3 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-3 is submitted for execution.
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-3: canCommit Started
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-3 can be committed
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-3: preCommit Started
10:05:32.248 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-3: doCommit Started
10:05:32.248 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[78f0020a], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[78f0020a], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[78f0020a], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[53b4232c], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[53b4232c], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[53b4232c], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.249 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-3: doCommit completed
10:05:32.249 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-aaa with version 0.5.0
10:05:32.257 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-openflow with version 0.1.2 to operational datastore
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-4 allocated with snapshot Version[53b4232c]
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-4 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-4 : Ready
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-4 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-4 is submitted for execution.
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-4: canCommit Started
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-4 can be committed
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-4: preCommit Started
10:05:32.260 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-4: doCommit Started
10:05:32.260 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[53b4232c], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[53b4232c], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[53b4232c], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[751c74b8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[751c74b8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[751c74b8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.261 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-4: doCommit completed
10:05:32.261 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-openflow with version 0.1.2
10:05:32.265 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-aaa-tacacs with version 0.5.0 to operational datastore
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-5 allocated with snapshot Version[751c74b8]
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-5 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-5 : Ready
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-5 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-5 is submitted for execution.
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-5: canCommit Started
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-5 can be committed
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-5: preCommit Started
10:05:32.266 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-5: doCommit Started
10:05:32.266 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[751c74b8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[751c74b8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[751c74b8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7a8e9745], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7a8e9745], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7a8e9745], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.268 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-5: doCommit completed
10:05:32.268 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-aaa-tacacs with version 0.5.0
10:05:32.271 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-procmon with version 0.4.0 to operational datastore
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-6 allocated with snapshot Version[7a8e9745]
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-6 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-6 : Ready
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-6 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-6 is submitted for execution.
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-6: canCommit Started
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-6 can be committed
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-6: preCommit Started
10:05:32.273 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-6: doCommit Started
10:05:32.273 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7a8e9745], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7a8e9745], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7a8e9745], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[c6616be], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[c6616be], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[c6616be], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.275 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-6: doCommit completed
10:05:32.275 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-procmon with version 0.4.0
10:05:32.296 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model ietf-interfaces with version 2018-02-20 to operational datastore
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-7 allocated with snapshot Version[c6616be]
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-7 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-7 : Ready
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-7 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-7 is submitted for execution.
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-7: canCommit Started
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-7 can be committed
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-7: preCommit Started
10:05:32.316 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-7: doCommit Started
10:05:32.316 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[c6616be], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[c6616be], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[c6616be], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7b826723], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7b826723], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7b826723], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.318 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-7: doCommit completed
10:05:32.318 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model ietf-interfaces with version 2018-02-20
10:05:32.328 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-system-logging with version 0.3.1 to operational datastore
10:05:32.332 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-8 allocated with snapshot Version[7b826723]
10:05:32.332 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-8 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}
10:05:32.332 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-8 : Ready
10:05:32.332 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-8 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.332 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-8 is submitted for execution.
10:05:32.333 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-8: canCommit Started
10:05:32.333 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-8 can be committed
10:05:32.333 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-8: preCommit Started
10:05:32.333 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-8: doCommit Started
10:05:32.333 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7b826723], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7b826723], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7b826723], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[377904e8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[377904e8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[377904e8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.335 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-8: doCommit completed
10:05:32.335 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-system-logging with version 0.3.1
10:05:32.339 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-license with version 0.2.0 to operational datastore
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-9 allocated with snapshot Version[377904e8]
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-9 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-9 : Ready
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-9 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-9 is submitted for execution.
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-9: canCommit Started
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-9 can be committed
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-9: preCommit Started
10:05:32.341 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-9: doCommit Started
10:05:32.341 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[377904e8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[377904e8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[377904e8], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[3472802d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[3472802d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[3472802d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.344 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-9: doCommit completed
10:05:32.344 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-license with version 0.2.0
10:05:32.348 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-messages with version 0.0.1 to operational datastore
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-10 allocated with snapshot Version[3472802d]
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-10 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-10 : Ready
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-10 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-10 is submitted for execution.
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-10: canCommit Started
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-10 can be committed
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-10: preCommit Started
10:05:32.351 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-10: doCommit Started
10:05:32.351 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[3472802d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[3472802d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[3472802d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7321f020], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7321f020], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7321f020], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.354 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-10: doCommit completed
10:05:32.354 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-messages with version 0.0.1
10:05:32.358 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-yang-types with version 0.3.0 to operational datastore
10:05:32.361 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-11 allocated with snapshot Version[7321f020]
10:05:32.361 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-11 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-11 : Ready
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-11 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-11 is submitted for execution.
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-11: canCommit Started
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-11 can be committed
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-11: preCommit Started
10:05:32.362 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-11: doCommit Started
10:05:32.362 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7321f020], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7321f020], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7321f020], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[32715974], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[32715974], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[32715974], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.365 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-11: doCommit completed
10:05:32.365 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-yang-types with version 0.3.0
10:05:32.368 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-extensions with version 2020-06-16 to operational datastore
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-12 allocated with snapshot Version[32715974]
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-12 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-12 : Ready
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-12 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-12 is submitted for execution.
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-12: canCommit Started
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-12 can be committed
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-12: preCommit Started
10:05:32.372 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-12: doCommit Started
10:05:32.372 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[32715974], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[32715974], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[32715974], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7c060525], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7c060525], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7c060525], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.376 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-12: doCommit completed
10:05:32.376 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-extensions with version 2020-06-16
10:05:32.381 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-alarms with version 0.3.2 to operational datastore
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-13 allocated with snapshot Version[7c060525]
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-13 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-13 : Ready
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-13 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-13 is submitted for execution.
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-13: canCommit Started
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-13 can be committed
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-13: preCommit Started
10:05:32.384 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-13: doCommit Started
10:05:32.384 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7c060525], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7c060525], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7c060525], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[308022c3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[308022c3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[308022c3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.388 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-13: doCommit completed
10:05:32.388 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-alarms with version 0.3.2
10:05:32.391 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-aaa-types with version 0.4.1 to operational datastore
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-14 allocated with snapshot Version[308022c3]
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-14 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-14 : Ready
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-14 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-14 is submitted for execution.
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-14: canCommit Started
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-14 can be committed
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-14: preCommit Started
10:05:32.393 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-14: doCommit Started
10:05:32.393 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[308022c3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[308022c3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[308022c3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[225f8852], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[225f8852], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[225f8852], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.397 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-14: doCommit completed
10:05:32.397 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-aaa-types with version 0.4.1
10:05:32.404 [mdsal-subscription-counters2] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fc027af} unlocked
10:05:32.404 [mdsal-subscription-counters2] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fc027af} readied
10:05:32.404 [mdsal-subscription-counters2] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fc027af}
10:05:32.404 [mdsal-subscription-counters2] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fc027af} completed successfully
10:05:32.404 [mdsal-subscription-counters2] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.410 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-if-ethernet with version 2.11.0 to operational datastore
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-15 allocated with snapshot Version[225f8852]
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-15 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-15 : Ready
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-15 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-15 is submitted for execution.
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-15: canCommit Started
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-15 can be committed
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-15: preCommit Started
10:05:32.419 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-15: doCommit Started
10:05:32.419 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[225f8852], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[225f8852], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[225f8852], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[3a7ead28], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[3a7ead28], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[3a7ead28], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.425 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-15: doCommit completed
10:05:32.425 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-if-ethernet with version 2.11.0
10:05:32.440 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-platform with version 0.13.0 to operational datastore
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-16 allocated with snapshot Version[3a7ead28]
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-16 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-16 : Ready
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-16 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-16 is submitted for execution.
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-16: canCommit Started
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-16 can be committed
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-16: preCommit Started
10:05:32.450 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-16: doCommit Started
10:05:32.450 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[3a7ead28], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[3a7ead28], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[3a7ead28], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[60fc1c1e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[60fc1c1e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[60fc1c1e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.458 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-16: doCommit completed
10:05:32.458 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-platform with version 0.13.0
10:05:32.460 [mdsal-subscription-counters18] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@328d018d} unlocked
10:05:32.460 [mdsal-subscription-counters18] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@328d018d} readied
10:05:32.460 [mdsal-subscription-counters18] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@328d018d}
10:05:32.460 [mdsal-subscription-counters18] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@328d018d} completed successfully
10:05:32.460 [mdsal-subscription-counters18] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.463 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-system-terminal with version 0.3.1 to operational datastore
10:05:32.465 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-17 allocated with snapshot Version[60fc1c1e]
10:05:32.465 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-17 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-17 : Ready
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-17 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-17 is submitted for execution.
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-17: canCommit Started
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-17 can be committed
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-17: preCommit Started
10:05:32.466 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-17: doCommit Started
10:05:32.466 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[60fc1c1e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[60fc1c1e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[60fc1c1e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[32b94cf3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[32b94cf3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[32b94cf3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.474 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-17: doCommit completed
10:05:32.474 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-system-terminal with version 0.3.1
10:05:32.482 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-platform-types with version 1.1.0 to operational datastore
10:05:32.484 [mdsal-subscription-counters3] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fd8b884} unlocked
10:05:32.484 [mdsal-subscription-counters3] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fd8b884} readied
10:05:32.484 [mdsal-subscription-counters3] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fd8b884}
10:05:32.484 [mdsal-subscription-counters3] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@6fd8b884} completed successfully
10:05:32.484 [mdsal-subscription-counters3] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-18 allocated with snapshot Version[32b94cf3]
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-18 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-18 : Ready
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-18 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-18 is submitted for execution.
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-18: canCommit Started
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-18 can be committed
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-18: preCommit Started
10:05:32.486 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-18: doCommit Started
10:05:32.486 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[32b94cf3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[32b94cf3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[32b94cf3], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[693afac7], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[693afac7], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[693afac7], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.495 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-18: doCommit completed
10:05:32.495 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-platform-types with version 1.1.0
10:05:32.514 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-interfaces with version 2.5.0 to operational datastore
10:05:32.530 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-19 allocated with snapshot Version[693afac7]
10:05:32.530 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-19 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-19 : Ready
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-19 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-19 is submitted for execution.
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-19: canCommit Started
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-19 can be committed
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-19: preCommit Started
10:05:32.531 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-19: doCommit Started
10:05:32.531 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[693afac7], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[693afac7], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[693afac7], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[67cccdb1], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[67cccdb1], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[67cccdb1], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.540 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-19: doCommit completed
10:05:32.540 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-interfaces with version 2.5.0
10:05:32.545 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-if-aggregate with version 2.4.3 to operational datastore
10:05:32.547 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-20 allocated with snapshot Version[67cccdb1]
10:05:32.547 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-20 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-20 : Ready
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-20 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-20 is submitted for execution.
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-20: canCommit Started
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-20 can be committed
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-20: preCommit Started
10:05:32.548 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-20: doCommit Started
10:05:32.548 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[67cccdb1], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[67cccdb1], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[67cccdb1], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[59ada828], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[59ada828], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[59ada828], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.558 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-20: doCommit completed
10:05:32.558 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-if-aggregate with version 2.4.3
10:05:32.566 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-inet-types with version 0.4.0 to operational datastore
10:05:32.573 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-21 allocated with snapshot Version[59ada828]
10:05:32.573 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-21 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-inet-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/inet";
prefix "oc-inet";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of Internet address related
types for use in OpenConfig modules.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.4.0";
revision "2021-01-07" {
description
"Remove module extension oc-ext:regexp-posix by making pattern regexes
conform to RFC7950.
Types impacted:
- ipv4-address
- ipv4-address-zoned
- ipv6-address
- domain-name";
reference "0.4.0";
}
revision "2020-10-12" {
description
"Fix anchors for domain-name pattern.";
reference "0.3.5";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions and add anchors for domain-name
pattern.";
reference "0.3.4";
}
revision "2019-04-25" {
description
"Fix regex bug for ipv6-prefix type";
reference "0.3.3";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.2";
}
revision 2017-08-24 {
description
"Minor formatting fixes.";
reference "0.3.1";
}
revision 2017-07-06 {
description
"Add domain-name and host typedefs";
reference "0.3.0";
}
revision 2017-04-03 {
description
"Add ip-version typedef.";
reference "0.2.0";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// IPv4 and IPv6 types.
typedef ipv4-address {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An IPv4 address in dotted quad notation using the default
zone.";
}
typedef ipv4-address-zoned {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)$';
}
description
"An IPv4 address in dotted quad notation. This type allows
specification of a zone index to disambiguate identical
address values. For link-local addresses, the index is
typically the interface index or interface name.";
}
typedef ipv6-address {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats, using the default zone.";
}
typedef ipv6-address-zoned {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats. This type allows specification of
a zone index to disambiguate identical address values. For
link-local addresses, the index is typically the interface
index or interface name.";
}
typedef ipv4-prefix {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$';
}
description
"An IPv4 prefix represented in dotted quad notation followed by
a slash and a CIDR mask (0 <= mask <= 32).";
}
typedef ipv6-prefix {
type string {
pattern
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])';
oc-ext:posix-pattern
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$';
}
description
"An IPv6 prefix represented in full, shortened, or mixed
shortened format followed by a slash and CIDR mask
(0 <= mask <= 128).";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"An IPv4 or IPv6 address with no prefix specified.";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"An IPv4 or IPv6 prefix.";
}
typedef ip-version {
type enumeration {
enum UNKNOWN {
value 0;
description
"An unknown or unspecified version of the Internet
protocol.";
}
enum IPV4 {
value 4;
description
"The IPv4 protocol as defined in RFC 791.";
}
enum IPV6 {
value 6;
description
"The IPv6 protocol as defined in RFC 2460.";
}
}
description
"This value represents the version of the IP protocol.
Note that integer representation of the enumerated values
are not specified, and are not required to follow the
InetVersion textual convention in SMIv2.";
reference
"RFC 791: Internet Protocol
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef domain-name {
type string {
length "1..253";
pattern
'(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)';
oc-ext:posix-pattern
'^(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)$';
}
description
"The domain-name type represents a DNS domain name.
Fully quallified left to the models which utilize this type.
Internet domain names are only loosely specified. Section
3.5 of RFC 1034 recommends a syntax (modified in Section
2.1 of RFC 1123). The pattern above is intended to allow
for current practice in domain name use, and some possible
future expansion. It is designed to hold various types of
domain names, including names used for A or AAAA records
(host names) and other records, such as SRV records. Note
that Internet host names have a stricter syntax (described
in RFC 952) than the DNS recommendations in RFCs 1034 and
1123, and that systems that want to store host names in
schema nodes using the domain-name type are recommended to
adhere to this stricter standard to ensure interoperability.
The encoding of DNS names in the DNS protocol is limited
to 255 characters. Since the encoding consists of labels
prefixed by a length bytes and there is a trailing NULL
byte, only 253 characters can appear in the textual dotted
notation.
Domain-name values use the US-ASCII encoding. Their canonical
format uses lowercase US-ASCII characters. Internationalized
domain names MUST be encoded in punycode as described in RFC
3492";
}
typedef host {
type union {
type ip-address;
type domain-name;
}
description
"The host type represents either an unzoned IP address or a DNS
domain name.";
}
typedef as-number {
type uint32;
description
"A numeric identifier for an autonomous system (AS). An AS is a
single domain, under common administrative control, which forms
a unit of routing policy. Autonomous systems can be assigned a
2-byte identifier, or a 4-byte identifier which may have public
or private scope. Private ASNs are assigned from dedicated
ranges. Public ASNs are assigned from ranges allocated by IANA
to the regional internet registries (RIRs).";
reference
"RFC 1930 Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271 A Border Gateway Protocol 4 (BGP-4)";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"A differentiated services code point (DSCP) marking within the
IP header.";
reference
"RFC 2474 Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The IPv6 flow-label is a 20-bit value within the IPv6 header
which is optionally used by the source of the IPv6 packet to
label sets of packets for which special handling may be
required.";
reference
"RFC 2460 Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16;
description
"A 16-bit port number used by a transport protocol such as TCP
or UDP.";
reference
"RFC 768 User Datagram Protocol
RFC 793 Transmission Control Protocol";
}
typedef uri {
type string;
description
"An ASCII-encoded Uniform Resource Identifier (URI) as defined
in RFC 3986.";
reference
"RFC 3986 Uniform Resource Identifier (URI): Generic Syntax";
}
typedef url {
type string;
description
"An ASCII-encoded Uniform Resource Locator (URL) as defined
in RFC 3986, section 1.1.3";
reference
"RFC 3986, paragraph 1.1.3";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-inet-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-21 : Ready
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-21 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-21 is submitted for execution.
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-21: canCommit Started
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-21 can be committed
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-21: preCommit Started
10:05:32.574 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-21: doCommit Started
10:05:32.574 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[59ada828], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[59ada828], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[59ada828], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[10c53f3f], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[10c53f3f], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[10c53f3f], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[10c53f3f], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-inet-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/inet";
prefix "oc-inet";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of Internet address related
types for use in OpenConfig modules.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.4.0";
revision "2021-01-07" {
description
"Remove module extension oc-ext:regexp-posix by making pattern regexes
conform to RFC7950.
Types impacted:
- ipv4-address
- ipv4-address-zoned
- ipv6-address
- domain-name";
reference "0.4.0";
}
revision "2020-10-12" {
description
"Fix anchors for domain-name pattern.";
reference "0.3.5";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions and add anchors for domain-name
pattern.";
reference "0.3.4";
}
revision "2019-04-25" {
description
"Fix regex bug for ipv6-prefix type";
reference "0.3.3";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.2";
}
revision 2017-08-24 {
description
"Minor formatting fixes.";
reference "0.3.1";
}
revision 2017-07-06 {
description
"Add domain-name and host typedefs";
reference "0.3.0";
}
revision 2017-04-03 {
description
"Add ip-version typedef.";
reference "0.2.0";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// IPv4 and IPv6 types.
typedef ipv4-address {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An IPv4 address in dotted quad notation using the default
zone.";
}
typedef ipv4-address-zoned {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)$';
}
description
"An IPv4 address in dotted quad notation. This type allows
specification of a zone index to disambiguate identical
address values. For link-local addresses, the index is
typically the interface index or interface name.";
}
typedef ipv6-address {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats, using the default zone.";
}
typedef ipv6-address-zoned {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats. This type allows specification of
a zone index to disambiguate identical address values. For
link-local addresses, the index is typically the interface
index or interface name.";
}
typedef ipv4-prefix {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$';
}
description
"An IPv4 prefix represented in dotted quad notation followed by
a slash and a CIDR mask (0 <= mask <= 32).";
}
typedef ipv6-prefix {
type string {
pattern
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])';
oc-ext:posix-pattern
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$';
}
description
"An IPv6 prefix represented in full, shortened, or mixed
shortened format followed by a slash and CIDR mask
(0 <= mask <= 128).";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"An IPv4 or IPv6 address with no prefix specified.";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"An IPv4 or IPv6 prefix.";
}
typedef ip-version {
type enumeration {
enum UNKNOWN {
value 0;
description
"An unknown or unspecified version of the Internet
protocol.";
}
enum IPV4 {
value 4;
description
"The IPv4 protocol as defined in RFC 791.";
}
enum IPV6 {
value 6;
description
"The IPv6 protocol as defined in RFC 2460.";
}
}
description
"This value represents the version of the IP protocol.
Note that integer representation of the enumerated values
are not specified, and are not required to follow the
InetVersion textual convention in SMIv2.";
reference
"RFC 791: Internet Protocol
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef domain-name {
type string {
length "1..253";
pattern
'(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)';
oc-ext:posix-pattern
'^(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)$';
}
description
"The domain-name type represents a DNS domain name.
Fully quallified left to the models which utilize this type.
Internet domain names are only loosely specified. Section
3.5 of RFC 1034 recommends a syntax (modified in Section
2.1 of RFC 1123). The pattern above is intended to allow
for current practice in domain name use, and some possible
future expansion. It is designed to hold various types of
domain names, including names used for A or AAAA records
(host names) and other records, such as SRV records. Note
that Internet host names have a stricter syntax (described
in RFC 952) than the DNS recommendations in RFCs 1034 and
1123, and that systems that want to store host names in
schema nodes using the domain-name type are recommended to
adhere to this stricter standard to ensure interoperability.
The encoding of DNS names in the DNS protocol is limited
to 255 characters. Since the encoding consists of labels
prefixed by a length bytes and there is a trailing NULL
byte, only 253 characters can appear in the textual dotted
notation.
Domain-name values use the US-ASCII encoding. Their canonical
format uses lowercase US-ASCII characters. Internationalized
domain names MUST be encoded in punycode as described in RFC
3492";
}
typedef host {
type union {
type ip-address;
type domain-name;
}
description
"The host type represents either an unzoned IP address or a DNS
domain name.";
}
typedef as-number {
type uint32;
description
"A numeric identifier for an autonomous system (AS). An AS is a
single domain, under common administrative control, which forms
a unit of routing policy. Autonomous systems can be assigned a
2-byte identifier, or a 4-byte identifier which may have public
or private scope. Private ASNs are assigned from dedicated
ranges. Public ASNs are assigned from ranges allocated by IANA
to the regional internet registries (RIRs).";
reference
"RFC 1930 Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271 A Border Gateway Protocol 4 (BGP-4)";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"A differentiated services code point (DSCP) marking within the
IP header.";
reference
"RFC 2474 Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The IPv6 flow-label is a 20-bit value within the IPv6 header
which is optionally used by the source of the IPv6 packet to
label sets of packets for which special handling may be
required.";
reference
"RFC 2460 Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16;
description
"A 16-bit port number used by a transport protocol such as TCP
or UDP.";
reference
"RFC 768 User Datagram Protocol
RFC 793 Transmission Control Protocol";
}
typedef uri {
type string;
description
"An ASCII-encoded Uniform Resource Identifier (URI) as defined
in RFC 3986.";
reference
"RFC 3986 Uniform Resource Identifier (URI): Generic Syntax";
}
typedef url {
type string;
description
"An ASCII-encoded Uniform Resource Locator (URL) as defined
in RFC 3986, section 1.1.3";
reference
"RFC 3986, paragraph 1.1.3";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-inet-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.584 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-21: doCommit completed
10:05:32.585 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-inet-types with version 0.4.0
10:05:32.588 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-alarm-types with version 0.2.1 to operational datastore
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-22 allocated with snapshot Version[10c53f3f]
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-22 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-22 : Ready
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-22 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-22 is submitted for execution.
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-22: canCommit Started
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-22 can be committed
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-22: preCommit Started
10:05:32.590 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-22: doCommit Started
10:05:32.590 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[10c53f3f], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[10c53f3f], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[10c53f3f], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[10c53f3f], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-inet-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/inet";
prefix "oc-inet";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of Internet address related
types for use in OpenConfig modules.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.4.0";
revision "2021-01-07" {
description
"Remove module extension oc-ext:regexp-posix by making pattern regexes
conform to RFC7950.
Types impacted:
- ipv4-address
- ipv4-address-zoned
- ipv6-address
- domain-name";
reference "0.4.0";
}
revision "2020-10-12" {
description
"Fix anchors for domain-name pattern.";
reference "0.3.5";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions and add anchors for domain-name
pattern.";
reference "0.3.4";
}
revision "2019-04-25" {
description
"Fix regex bug for ipv6-prefix type";
reference "0.3.3";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.2";
}
revision 2017-08-24 {
description
"Minor formatting fixes.";
reference "0.3.1";
}
revision 2017-07-06 {
description
"Add domain-name and host typedefs";
reference "0.3.0";
}
revision 2017-04-03 {
description
"Add ip-version typedef.";
reference "0.2.0";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// IPv4 and IPv6 types.
typedef ipv4-address {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An IPv4 address in dotted quad notation using the default
zone.";
}
typedef ipv4-address-zoned {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)$';
}
description
"An IPv4 address in dotted quad notation. This type allows
specification of a zone index to disambiguate identical
address values. For link-local addresses, the index is
typically the interface index or interface name.";
}
typedef ipv6-address {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats, using the default zone.";
}
typedef ipv6-address-zoned {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats. This type allows specification of
a zone index to disambiguate identical address values. For
link-local addresses, the index is typically the interface
index or interface name.";
}
typedef ipv4-prefix {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$';
}
description
"An IPv4 prefix represented in dotted quad notation followed by
a slash and a CIDR mask (0 <= mask <= 32).";
}
typedef ipv6-prefix {
type string {
pattern
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])';
oc-ext:posix-pattern
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$';
}
description
"An IPv6 prefix represented in full, shortened, or mixed
shortened format followed by a slash and CIDR mask
(0 <= mask <= 128).";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"An IPv4 or IPv6 address with no prefix specified.";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"An IPv4 or IPv6 prefix.";
}
typedef ip-version {
type enumeration {
enum UNKNOWN {
value 0;
description
"An unknown or unspecified version of the Internet
protocol.";
}
enum IPV4 {
value 4;
description
"The IPv4 protocol as defined in RFC 791.";
}
enum IPV6 {
value 6;
description
"The IPv6 protocol as defined in RFC 2460.";
}
}
description
"This value represents the version of the IP protocol.
Note that integer representation of the enumerated values
are not specified, and are not required to follow the
InetVersion textual convention in SMIv2.";
reference
"RFC 791: Internet Protocol
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef domain-name {
type string {
length "1..253";
pattern
'(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)';
oc-ext:posix-pattern
'^(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)$';
}
description
"The domain-name type represents a DNS domain name.
Fully quallified left to the models which utilize this type.
Internet domain names are only loosely specified. Section
3.5 of RFC 1034 recommends a syntax (modified in Section
2.1 of RFC 1123). The pattern above is intended to allow
for current practice in domain name use, and some possible
future expansion. It is designed to hold various types of
domain names, including names used for A or AAAA records
(host names) and other records, such as SRV records. Note
that Internet host names have a stricter syntax (described
in RFC 952) than the DNS recommendations in RFCs 1034 and
1123, and that systems that want to store host names in
schema nodes using the domain-name type are recommended to
adhere to this stricter standard to ensure interoperability.
The encoding of DNS names in the DNS protocol is limited
to 255 characters. Since the encoding consists of labels
prefixed by a length bytes and there is a trailing NULL
byte, only 253 characters can appear in the textual dotted
notation.
Domain-name values use the US-ASCII encoding. Their canonical
format uses lowercase US-ASCII characters. Internationalized
domain names MUST be encoded in punycode as described in RFC
3492";
}
typedef host {
type union {
type ip-address;
type domain-name;
}
description
"The host type represents either an unzoned IP address or a DNS
domain name.";
}
typedef as-number {
type uint32;
description
"A numeric identifier for an autonomous system (AS). An AS is a
single domain, under common administrative control, which forms
a unit of routing policy. Autonomous systems can be assigned a
2-byte identifier, or a 4-byte identifier which may have public
or private scope. Private ASNs are assigned from dedicated
ranges. Public ASNs are assigned from ranges allocated by IANA
to the regional internet registries (RIRs).";
reference
"RFC 1930 Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271 A Border Gateway Protocol 4 (BGP-4)";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"A differentiated services code point (DSCP) marking within the
IP header.";
reference
"RFC 2474 Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The IPv6 flow-label is a 20-bit value within the IPv6 header
which is optionally used by the source of the IPv6 packet to
label sets of packets for which special handling may be
required.";
reference
"RFC 2460 Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16;
description
"A 16-bit port number used by a transport protocol such as TCP
or UDP.";
reference
"RFC 768 User Datagram Protocol
RFC 793 Transmission Control Protocol";
}
typedef uri {
type string;
description
"An ASCII-encoded Uniform Resource Identifier (URI) as defined
in RFC 3986.";
reference
"RFC 3986 Uniform Resource Identifier (URI): Generic Syntax";
}
typedef url {
type string;
description
"An ASCII-encoded Uniform Resource Locator (URL) as defined
in RFC 3986, section 1.1.3";
reference
"RFC 3986, paragraph 1.1.3";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-inet-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[6cd44e4b], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[6cd44e4b], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[6cd44e4b], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[10c53f3f], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-inet-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/inet";
prefix "oc-inet";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of Internet address related
types for use in OpenConfig modules.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.4.0";
revision "2021-01-07" {
description
"Remove module extension oc-ext:regexp-posix by making pattern regexes
conform to RFC7950.
Types impacted:
- ipv4-address
- ipv4-address-zoned
- ipv6-address
- domain-name";
reference "0.4.0";
}
revision "2020-10-12" {
description
"Fix anchors for domain-name pattern.";
reference "0.3.5";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions and add anchors for domain-name
pattern.";
reference "0.3.4";
}
revision "2019-04-25" {
description
"Fix regex bug for ipv6-prefix type";
reference "0.3.3";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.2";
}
revision 2017-08-24 {
description
"Minor formatting fixes.";
reference "0.3.1";
}
revision 2017-07-06 {
description
"Add domain-name and host typedefs";
reference "0.3.0";
}
revision 2017-04-03 {
description
"Add ip-version typedef.";
reference "0.2.0";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// IPv4 and IPv6 types.
typedef ipv4-address {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An IPv4 address in dotted quad notation using the default
zone.";
}
typedef ipv4-address-zoned {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)$';
}
description
"An IPv4 address in dotted quad notation. This type allows
specification of a zone index to disambiguate identical
address values. For link-local addresses, the index is
typically the interface index or interface name.";
}
typedef ipv6-address {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats, using the default zone.";
}
typedef ipv6-address-zoned {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats. This type allows specification of
a zone index to disambiguate identical address values. For
link-local addresses, the index is typically the interface
index or interface name.";
}
typedef ipv4-prefix {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$';
}
description
"An IPv4 prefix represented in dotted quad notation followed by
a slash and a CIDR mask (0 <= mask <= 32).";
}
typedef ipv6-prefix {
type string {
pattern
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])';
oc-ext:posix-pattern
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$';
}
description
"An IPv6 prefix represented in full, shortened, or mixed
shortened format followed by a slash and CIDR mask
(0 <= mask <= 128).";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"An IPv4 or IPv6 address with no prefix specified.";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"An IPv4 or IPv6 prefix.";
}
typedef ip-version {
type enumeration {
enum UNKNOWN {
value 0;
description
"An unknown or unspecified version of the Internet
protocol.";
}
enum IPV4 {
value 4;
description
"The IPv4 protocol as defined in RFC 791.";
}
enum IPV6 {
value 6;
description
"The IPv6 protocol as defined in RFC 2460.";
}
}
description
"This value represents the version of the IP protocol.
Note that integer representation of the enumerated values
are not specified, and are not required to follow the
InetVersion textual convention in SMIv2.";
reference
"RFC 791: Internet Protocol
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef domain-name {
type string {
length "1..253";
pattern
'(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)';
oc-ext:posix-pattern
'^(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)$';
}
description
"The domain-name type represents a DNS domain name.
Fully quallified left to the models which utilize this type.
Internet domain names are only loosely specified. Section
3.5 of RFC 1034 recommends a syntax (modified in Section
2.1 of RFC 1123). The pattern above is intended to allow
for current practice in domain name use, and some possible
future expansion. It is designed to hold various types of
domain names, including names used for A or AAAA records
(host names) and other records, such as SRV records. Note
that Internet host names have a stricter syntax (described
in RFC 952) than the DNS recommendations in RFCs 1034 and
1123, and that systems that want to store host names in
schema nodes using the domain-name type are recommended to
adhere to this stricter standard to ensure interoperability.
The encoding of DNS names in the DNS protocol is limited
to 255 characters. Since the encoding consists of labels
prefixed by a length bytes and there is a trailing NULL
byte, only 253 characters can appear in the textual dotted
notation.
Domain-name values use the US-ASCII encoding. Their canonical
format uses lowercase US-ASCII characters. Internationalized
domain names MUST be encoded in punycode as described in RFC
3492";
}
typedef host {
type union {
type ip-address;
type domain-name;
}
description
"The host type represents either an unzoned IP address or a DNS
domain name.";
}
typedef as-number {
type uint32;
description
"A numeric identifier for an autonomous system (AS). An AS is a
single domain, under common administrative control, which forms
a unit of routing policy. Autonomous systems can be assigned a
2-byte identifier, or a 4-byte identifier which may have public
or private scope. Private ASNs are assigned from dedicated
ranges. Public ASNs are assigned from ranges allocated by IANA
to the regional internet registries (RIRs).";
reference
"RFC 1930 Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271 A Border Gateway Protocol 4 (BGP-4)";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"A differentiated services code point (DSCP) marking within the
IP header.";
reference
"RFC 2474 Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The IPv6 flow-label is a 20-bit value within the IPv6 header
which is optionally used by the source of the IPv6 packet to
label sets of packets for which special handling may be
required.";
reference
"RFC 2460 Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16;
description
"A 16-bit port number used by a transport protocol such as TCP
or UDP.";
reference
"RFC 768 User Datagram Protocol
RFC 793 Transmission Control Protocol";
}
typedef uri {
type string;
description
"An ASCII-encoded Uniform Resource Identifier (URI) as defined
in RFC 3986.";
reference
"RFC 3986 Uniform Resource Identifier (URI): Generic Syntax";
}
typedef url {
type string;
description
"An ASCII-encoded Uniform Resource Locator (URL) as defined
in RFC 3986, section 1.1.3";
reference
"RFC 3986, paragraph 1.1.3";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-inet-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.601 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-22: doCommit completed
10:05:32.602 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-alarm-types with version 0.2.1
10:05:32.623 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-vlan with version 3.2.0 to operational datastore
10:05:32.637 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-23 allocated with snapshot Version[6cd44e4b]
10:05:32.637 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-23 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}]=SimpleContainerNode{version=Version[751c74b8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-openflow, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.1.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-openflow {
yang-version "1";
namespace "http://openconfig.net/yang/openflow";
prefix "openflow";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-openflow-types { prefix of-types; }
import openconfig-system { prefix oc-sys; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data for
Openflow.";
oc-ext:openconfig-version "0.1.2";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.1.2";
}
revision "2017-08-24" {
description
"Minor formatting fixes.Initial revision";
reference "0.1.1";
}
revision "2017-06-01" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping openflow-controller-config {
description
"Openflow controller config";
leaf name {
type string;
description "Name of this Openflow controller. All connections
for the same controller need to have the same name.";
}
}
grouping openflow-controller-state {
description
"Openflow controller state";
}
grouping openflow-controllers-top {
description
"Top-level for the Openflow controllers model";
container controllers {
description
"Container for the Openflow controllers model";
list controller {
key "name";
description
"The Openflow Switch connects to all Openflow controllers
configured";
leaf name {
type leafref {
path "../config/name";
}
description
"The name identifies the controller.";
}
container config {
description
"Container for the Openflow controller config.";
uses openflow-controller-config;
}
container state {
config false;
description
"Container for the Openflow controller state.";
uses openflow-controller-config;
uses openflow-controller-state;
}
uses openflow-connections-top;
}
}
}
grouping openflow-connections-config {
description
"Configuration data for OpenFlow controller connections";
leaf aux-id {
type of-types:auxiliary-id;
description
"Controller auxiliary ID. Must be 0 for the main controller.
One controller may have multiple auxiliary connections as
specified by the Openflow protocol. Besides configuring the
main controller, it is also possible to configure auxiliary
connections. The main controller must have the aux-id
set to zero. All others must have an aux-id different
from 0.";
}
leaf priority {
type uint8;
description
"Optional value for servicing auxiliary connections with
different priorities.";
}
leaf address {
type oc-inet:ip-address;
description
"The IP address of the controller.";
}
leaf port {
type oc-inet:port-number;
default 6653;
description
"Controller port to use.";
}
leaf transport {
type of-types:transport;
default TCP;
description
"Controller transport protocol used.";
}
leaf certificate-id {
type string;
description
"Certificate ID is used for TLS connections. When installed,
certificates are associated with an ID. This ID specifies the
certificate to use in a TLS connection.";
}
leaf source-interface {
type oc-if:base-interface-ref;
description
"Optionally specify the source interface for the
controller connection.";
}
}
grouping openflow-connections-state {
description
"Operational state data for OpenFlow controller connections";
leaf connected {
type boolean;
description
"When set to true, indicates the connection between the
switch and controller is established.";
}
}
grouping openflow-connections-top {
description
"Top-level grouping for OpenFlow controller connections";
container connections {
description
"Enclosing container for list of controller connections";
list connection {
key "aux-id";
description
"List of connections to the OpenFlow controller.
The Openflow switch always connects to configured Openflow
controllers. Each controller can have more than one
connection, called auxiliary Openflow connections.";
leaf aux-id {
type leafref {
path "../config/aux-id";
}
description
"Reference to auxiliary id list key";
}
container config {
description
"Configuration data for OpenFlow controller connections";
uses openflow-connections-config;
}
container state {
config false;
description
"Operational state data for OpenFlow controller
connections";
uses openflow-connections-config;
uses openflow-connections-state;
}
}
}
}
grouping openflow-agent-config {
description
"Openflow agent config";
leaf datapath-id {
type of-types:datapath-id;
description
"Datapath unique ID. The lower 48-bits are for
a MAC address, while the upper 16-bits are
implementer-defined.";
}
leaf failure-mode {
type of-types:failure-mode;
description
"Failure mode for Openflow.";
}
leaf backoff-interval {
type uint32;
units seconds;
description
"Openflow agent connection backoff interval.";
}
leaf max-backoff {
type uint32;
units seconds;
description
"Openflow agent max backoff time.";
}
leaf inactivity-probe {
type uint32;
units seconds;
description
"Openflow agent inactivity probe period.";
}
}
grouping openflow-agent-state {
description
"Openflow agent state";
}
grouping openflow-agent-top {
description
"Top-level for the Openflow agent model";
container agent {
description
"Container for the Openflow agent model.";
container config {
description
"Container for the Openflow agent config.";
uses openflow-agent-config;
}
container state {
config false;
description
"Container for the Openflow agent state.";
uses openflow-agent-config;
uses openflow-agent-state;
}
}
}
grouping openflow-top {
description
"Top-level for the Openflow model";
container openflow {
description
"Container for Openflow model";
uses openflow-controllers-top;
uses openflow-agent-top;
}
}
augment "/oc-sys:system" {
description
"Adding OpenConfig data to the system model";
uses openflow-top;
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-openflow}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.1.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}]=SimpleContainerNode{version=Version[693afac7], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.1.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform-types";
prefix "oc-platform-types";
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines data types (e.g., YANG identities)
to support the OpenConfig component inventory model.";
oc-ext:openconfig-version "1.1.0";
revision "2021-01-18" {
description
"Add identity for software modules";
reference "1.1.0";
}
revision "2019-06-03" {
description
"Add OpenConfig component operating system patch type.";
reference "1.0.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.10.1";
}
revision "2018-11-16" {
description
"Added FEC_MODE_TYPE and FEC_STATUS_TYPE";
reference "0.10.0";
}
revision "2018-05-05" {
description
"Added min-max-time to
avg-min-max-instant-stats-precision1-celsius,
added new CONTROLLER_CARD identity";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping avg-min-max-instant-stats-precision1-celsius {
description
"Common grouping for recording temperature values in
Celsius with 1 decimal precision. Values include the
instantaneous, average, minimum, and maximum statistics";
leaf instant {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The arithmetic mean value of the statistic over the
sampling period.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The minimum value of the statistic over the sampling
period";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
units celsius;
description
"The maximum value of the statistic over the sampling
period";
}
uses oc-types:stat-interval-state;
uses oc-types:min-max-time;
}
// identity statements
identity OPENCONFIG_HARDWARE_COMPONENT {
description
"Base identity for hardware related components in a managed
device. Derived identities are partially based on contents
of the IANA Entity MIB.";
reference
"IANA Entity MIB and RFC 6933";
}
identity OPENCONFIG_SOFTWARE_COMPONENT {
description
"Base identity for software-related components in a managed
device";
}
// hardware types
identity CHASSIS {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Chassis component, typically with multiple slots / shelves";
}
identity BACKPLANE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Backplane component for aggregating traffic, typically
contained in a chassis component";
}
identity FABRIC {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Interconnect between ingress and egress ports on the
device (e.g., a crossbar switch).";
}
identity POWER_SUPPLY {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Component that is supplying power to the device";
}
identity FAN {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Cooling fan, or could be some other heat-reduction component";
}
identity SENSOR {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical sensor, e.g., a temperature sensor in a chassis";
}
identity FRU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Replaceable hardware component that does not have a more
specific defined schema.";
}
identity LINECARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Linecard component, typically inserted into a chassis slot";
}
identity CONTROLLER_CARD {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A type of linecard whose primary role is management or control
rather than data forwarding.";
}
identity PORT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Physical port, e.g., for attaching pluggables and networking
cables";
}
identity TRANSCEIVER {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Pluggable module present in a port";
}
identity CPU {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"Processing unit, e.g., a management processor";
}
identity STORAGE {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A storage subsystem on the device (disk, SSD, etc.)";
}
identity INTEGRATED_CIRCUIT {
base OPENCONFIG_HARDWARE_COMPONENT;
description
"A special purpose processing unit, typically for traffic
switching/forwarding (e.g., switching ASIC, NPU, forwarding
chip, etc.)";
}
identity OPERATING_SYSTEM {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Operating system running on a component";
}
identity OPERATING_SYSTEM_UPDATE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"An operating system update - which should be a subcomponent
of the `OPERATING_SYSTEM` running on a component. An update is
defined to be a set of software changes that are atomically
installed (and uninstalled) together. Multiple updates may be
present for the Operating System. A system should not list all
installed software packages using this type -- but rather
updates that are bundled together as a single installable
item";
}
identity BOOT_LOADER {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"Software layer responsible for loading and booting the
device OS or network OS.";
}
identity SOFTWARE_MODULE {
base OPENCONFIG_SOFTWARE_COMPONENT;
description
"A base identity for software modules installed and/or
running on the device. Modules include user-space programs
and kernel modules that provide specific functionality.
A component with type SOFTWARE_MODULE should also have a
module type that indicates the specific type of software module";
}
identity COMPONENT_OPER_STATUS {
description
"Current operational status of a platform component";
}
identity ACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled and active (i.e., up)";
}
identity INACTIVE {
base COMPONENT_OPER_STATUS;
description
"Component is enabled but inactive (i.e., down)";
}
identity DISABLED {
base COMPONENT_OPER_STATUS;
description
"Component is administratively disabled.";
}
identity FEC_MODE_TYPE {
description
"Base identity for FEC operational modes.";
}
identity FEC_ENABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively enabled.";
}
identity FEC_DISABLED {
base FEC_MODE_TYPE;
description
"FEC is administratively disabled.";
}
identity FEC_AUTO {
base FEC_MODE_TYPE;
description
"System will determine whether to enable or disable
FEC on a transceiver.";
}
identity FEC_STATUS_TYPE {
description
"Base identity for FEC operational statuses.";
}
identity FEC_STATUS_LOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally locked.";
}
identity FEC_STATUS_UNLOCKED {
base FEC_STATUS_TYPE;
description
"FEC is operationally unlocked.";
}
// typedef statements
typedef component-power-type {
type enumeration {
enum POWER_ENABLED {
description
"Enable power on the component";
}
enum POWER_DISABLED {
description
"Disable power on the component";
}
}
description
"A generic type reflecting whether a hardware component
is powered on or off";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.1.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[10c53f3f], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-inet-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-inet-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/inet";
prefix "oc-inet";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of Internet address related
types for use in OpenConfig modules.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.4.0";
revision "2021-01-07" {
description
"Remove module extension oc-ext:regexp-posix by making pattern regexes
conform to RFC7950.
Types impacted:
- ipv4-address
- ipv4-address-zoned
- ipv6-address
- domain-name";
reference "0.4.0";
}
revision "2020-10-12" {
description
"Fix anchors for domain-name pattern.";
reference "0.3.5";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions and add anchors for domain-name
pattern.";
reference "0.3.4";
}
revision "2019-04-25" {
description
"Fix regex bug for ipv6-prefix type";
reference "0.3.3";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.2";
}
revision 2017-08-24 {
description
"Minor formatting fixes.";
reference "0.3.1";
}
revision 2017-07-06 {
description
"Add domain-name and host typedefs";
reference "0.3.0";
}
revision 2017-04-03 {
description
"Add ip-version typedef.";
reference "0.2.0";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// IPv4 and IPv6 types.
typedef ipv4-address {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An IPv4 address in dotted quad notation using the default
zone.";
}
typedef ipv4-address-zoned {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])(%[a-zA-Z0-9_]+)$';
}
description
"An IPv4 address in dotted quad notation. This type allows
specification of a zone index to disambiguate identical
address values. For link-local addresses, the index is
typically the interface index or interface name.";
}
typedef ipv6-address {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats, using the default zone.";
}
typedef ipv6-address-zoned {
type string {
pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
oc-ext:posix-pattern
// Must support compression through different lengths
// therefore this regexp is complex.
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')(%[a-zA-Z0-9_]+)$';
}
description
"An IPv6 address represented as either a full address; shortened
or mixed-shortened formats. This type allows specification of
a zone index to disambiguate identical address values. For
link-local addresses, the index is typically the interface
index or interface name.";
}
typedef ipv4-prefix {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])/(([0-9])|([1-2][0-9])|(3[0-2]))$';
}
description
"An IPv4 prefix represented in dotted quad notation followed by
a slash and a CIDR mask (0 <= mask <= 32).";
}
typedef ipv6-prefix {
type string {
pattern
'(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])';
oc-ext:posix-pattern
'^(([0-9a-fA-F]{1,4}:){7}[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,7}:|' +
'([0-9a-fA-F]{1,4}:){1,6}:[0-9a-fA-F]{1,4}|' +
'([0-9a-fA-F]{1,4}:){1,5}(:[0-9a-fA-F]{1,4}){1,2}|' +
'([0-9a-fA-F]{1,4}:){1,4}(:[0-9a-fA-F]{1,4}){1,3}|' +
'([0-9a-fA-F]{1,4}:){1,3}(:[0-9a-fA-F]{1,4}){1,4}|' +
'([0-9a-fA-F]{1,4}:){1,2}(:[0-9a-fA-F]{1,4}){1,5}|' +
'[0-9a-fA-F]{1,4}:((:[0-9a-fA-F]{1,4}){1,6})|' +
':((:[0-9a-fA-F]{1,4}){1,7}|:)' +
')/(12[0-8]|1[0-1][0-9]|[1-9][0-9]|[0-9])$';
}
description
"An IPv6 prefix represented in full, shortened, or mixed
shortened format followed by a slash and CIDR mask
(0 <= mask <= 128).";
}
typedef ip-address {
type union {
type ipv4-address;
type ipv6-address;
}
description
"An IPv4 or IPv6 address with no prefix specified.";
}
typedef ip-prefix {
type union {
type ipv4-prefix;
type ipv6-prefix;
}
description
"An IPv4 or IPv6 prefix.";
}
typedef ip-version {
type enumeration {
enum UNKNOWN {
value 0;
description
"An unknown or unspecified version of the Internet
protocol.";
}
enum IPV4 {
value 4;
description
"The IPv4 protocol as defined in RFC 791.";
}
enum IPV6 {
value 6;
description
"The IPv6 protocol as defined in RFC 2460.";
}
}
description
"This value represents the version of the IP protocol.
Note that integer representation of the enumerated values
are not specified, and are not required to follow the
InetVersion textual convention in SMIv2.";
reference
"RFC 791: Internet Protocol
RFC 2460: Internet Protocol, Version 6 (IPv6) Specification
RFC 4001: Textual Conventions for Internet Network Addresses";
}
typedef domain-name {
type string {
length "1..253";
pattern
'(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)';
oc-ext:posix-pattern
'^(((([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.)*' +
'([a-zA-Z0-9_]([a-zA-Z0-9\-_]){0,61})?[a-zA-Z0-9]\.?)' +
'|\.)$';
}
description
"The domain-name type represents a DNS domain name.
Fully quallified left to the models which utilize this type.
Internet domain names are only loosely specified. Section
3.5 of RFC 1034 recommends a syntax (modified in Section
2.1 of RFC 1123). The pattern above is intended to allow
for current practice in domain name use, and some possible
future expansion. It is designed to hold various types of
domain names, including names used for A or AAAA records
(host names) and other records, such as SRV records. Note
that Internet host names have a stricter syntax (described
in RFC 952) than the DNS recommendations in RFCs 1034 and
1123, and that systems that want to store host names in
schema nodes using the domain-name type are recommended to
adhere to this stricter standard to ensure interoperability.
The encoding of DNS names in the DNS protocol is limited
to 255 characters. Since the encoding consists of labels
prefixed by a length bytes and there is a trailing NULL
byte, only 253 characters can appear in the textual dotted
notation.
Domain-name values use the US-ASCII encoding. Their canonical
format uses lowercase US-ASCII characters. Internationalized
domain names MUST be encoded in punycode as described in RFC
3492";
}
typedef host {
type union {
type ip-address;
type domain-name;
}
description
"The host type represents either an unzoned IP address or a DNS
domain name.";
}
typedef as-number {
type uint32;
description
"A numeric identifier for an autonomous system (AS). An AS is a
single domain, under common administrative control, which forms
a unit of routing policy. Autonomous systems can be assigned a
2-byte identifier, or a 4-byte identifier which may have public
or private scope. Private ASNs are assigned from dedicated
ranges. Public ASNs are assigned from ranges allocated by IANA
to the regional internet registries (RIRs).";
reference
"RFC 1930 Guidelines for creation, selection, and registration
of an Autonomous System (AS)
RFC 4271 A Border Gateway Protocol 4 (BGP-4)";
}
typedef dscp {
type uint8 {
range "0..63";
}
description
"A differentiated services code point (DSCP) marking within the
IP header.";
reference
"RFC 2474 Definition of the Differentiated Services Field
(DS Field) in the IPv4 and IPv6 Headers";
}
typedef ipv6-flow-label {
type uint32 {
range "0..1048575";
}
description
"The IPv6 flow-label is a 20-bit value within the IPv6 header
which is optionally used by the source of the IPv6 packet to
label sets of packets for which special handling may be
required.";
reference
"RFC 2460 Internet Protocol, Version 6 (IPv6) Specification";
}
typedef port-number {
type uint16;
description
"A 16-bit port number used by a transport protocol such as TCP
or UDP.";
reference
"RFC 768 User Datagram Protocol
RFC 793 Transmission Control Protocol";
}
typedef uri {
type string;
description
"An ASCII-encoded Uniform Resource Identifier (URI) as defined
in RFC 3986.";
reference
"RFC 3986 Uniform Resource Identifier (URI): Generic Syntax";
}
typedef url {
type string;
description
"An ASCII-encoded Uniform Resource Locator (URL) as defined
in RFC 3986, section 1.1.3";
reference
"RFC 3986, paragraph 1.1.3";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-inet-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}]=SimpleContainerNode{version=Version[7b826723], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2018-02-20}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-interfaces {
yang-version 1.1;
namespace "urn:ietf:params:xml:ns:yang:ietf-interfaces";
prefix if;
import ietf-yang-types {
prefix yang;
}
organization
"IETF NETMOD (Network Modeling) Working Group";
contact
"WG Web:
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[78bc70d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[78bc70d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[78bc70d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.657 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-23: doCommit completed
10:05:32.657 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-vlan with version 3.2.0
10:05:32.662 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-aaa-radius with version 0.5.0 to operational datastore
10:05:32.663 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-24 allocated with snapshot Version[78bc70d]
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-24 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-24 : Ready
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-24 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-24 is submitted for execution.
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-24: canCommit Started
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-24 can be committed
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-24: preCommit Started
10:05:32.664 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-24: doCommit Started
10:05:32.667 [mdsal-subscription-counters4] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@2eb102d0} unlocked
10:05:32.667 [mdsal-subscription-counters4] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@2eb102d0} readied
10:05:32.667 [mdsal-subscription-counters4] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@2eb102d0}
10:05:32.668 [mdsal-subscription-counters4] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@2eb102d0} completed successfully
10:05:32.668 [mdsal-subscription-counters4] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.664 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[78bc70d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[78bc70d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[78bc70d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[2eda9249], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[2eda9249], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[2eda9249], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.676 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-24: doCommit completed
10:05:32.677 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-aaa-radius with version 0.5.0
10:05:32.679 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-if-types with version 0.2.1 to operational datastore
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-25 allocated with snapshot Version[2eda9249]
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-25 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-25 : Ready
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-25 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-25 is submitted for execution.
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-25: canCommit Started
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-25 can be committed
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-25: preCommit Started
10:05:32.680 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-25: doCommit Started
10:05:32.680 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[2eda9249], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[2eda9249], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[2eda9249], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[376ca37d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[376ca37d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[376ca37d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.693 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-25: doCommit completed
10:05:32.693 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-if-types with version 0.2.1
10:05:32.741 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model iana-if-type with version 2023-01-26 to operational datastore
10:05:32.755 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-26 allocated with snapshot Version[376ca37d]
10:05:32.755 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-26 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2023-01-26 {
description
"Fix incorrect quotation for previous 3 revision statements.";
}
revision 2022-08-24 {
description
"Updated reference for ifType 303.";
}
revision 2022-08-17 {
description
"Changed gpon description to refer to G.984.";
}
revision 2022-03-07 {
description
"Coalesced revision history entries for 2018-06-28.";
}
revision 2021-06-21 {
description
"Corrected reference for ifType 303.";
}
revision 2021-05-17 {
description
"Registered ifType 303.";
}
revision 2021-04-22 {
description
"Registered ifType 302.";
}
revision 2021-04-01 {
description
"Updated reference for 301.";
}
revision 2021-02-18 {
description
"Registered ifType 301.";
}
revision 2020-08-27 {
description
"Added missing references.";
}
revision 2020-07-13 {
description
"Added identity cpri.";
}
revision 2020-07-10 {
description
"Registered ifType 300.";
}
revision 2020-01-10 {
description
"Registered ifType 299.";
}
revision 2019-10-16 {
description
"Registered ifType 298.";
}
revision 2019-07-16 {
description
"Registered ifType 297.";
}
revision 2019-06-21 {
description
"Updated reference associated with ifTypes 295-296.";
}
revision 2019-02-08 {
description
"Corrected formatting issue.";
}
revision 2019-01-31 {
description
"Registered ifTypes 295-296.";
}
revision 2018-07-03 {
description
"Corrected revision date.";
}
revision 2018-06-29 {
description
"Corrected formatting issue.";
}
revision 2018-06-28 {
description
"Registered ifTypes 293 and 294.";
}
revision 2018-06-22 {
description
"Registered ifType 292.";
}
revision 2018-06-21 {
description
"Registered ifType 291.";
}
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.984.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
reference
"IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
reference
"IEEE G.9961";
}
identity otnOtsi {
base iana-interface-type;
description
"Optical Tributary Signal.";
reference
"ITU-T G.959.1";
}
identity otnOtuc {
base iana-interface-type;
description
"OTN OTUCn.";
reference
"ITU-T G.709/Y.1331";
}
identity otnOduc {
base iana-interface-type;
description
"OTN ODUC.";
reference
"ITU-T G.709";
}
identity otnOtsig {
base iana-interface-type;
description
"OTN OTUC Signal.";
reference
"ITU-T G.709";
}
identity microwaveCarrierTermination {
base iana-interface-type;
description
"air interface of a single microwave carrier.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity microwaveRadioLinkTerminal {
base iana-interface-type;
description
"radio link interface for one or several aggregated microwave carriers.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity ieee8021axDrni {
base iana-interface-type;
description
"IEEE 802.1AX Distributed Resilient Network Interface.";
reference
"IEEE 802.1AX-Rev-d2-0";
}
identity ax25 {
base iana-interface-type;
description
"AX.25 network interfaces.";
reference
"AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
}
identity ieee19061nanocom {
base iana-interface-type;
description
"Nanoscale and Molecular Communication.";
reference
"IEEE 1906.1-2015";
}
identity cpri {
base iana-interface-type;
description
"Common Public Radio Interface.";
reference
"CPRI v7.0";
}
identity omni {
base iana-interface-type;
description
"Overlay Multilink Network Interface (OMNI).";
reference
"draft-templin-6man-omni-00";
}
identity roe {
base iana-interface-type;
description
"Radio over Ethernet Interface.";
reference
"1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
}
identity p2pOverLan {
base iana-interface-type;
description
"Point to Point over LAN interface.";
reference
"RFC 9296 - ifStackTable for the Point-to-Point (P2P) Interface over a LAN Type: Definition and Examples";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=iana-if-type}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2023-01-26}]}
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-26 : Ready
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-26 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-26 is submitted for execution.
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-26: canCommit Started
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-26 can be committed
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-26: preCommit Started
10:05:32.756 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-26: doCommit Started
10:05:32.756 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[376ca37d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[376ca37d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[376ca37d], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[11e46a72], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[11e46a72], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[11e46a72], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}]=SimpleContainerNode{version=Version[11e46a72], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2023-01-26 {
description
"Fix incorrect quotation for previous 3 revision statements.";
}
revision 2022-08-24 {
description
"Updated reference for ifType 303.";
}
revision 2022-08-17 {
description
"Changed gpon description to refer to G.984.";
}
revision 2022-03-07 {
description
"Coalesced revision history entries for 2018-06-28.";
}
revision 2021-06-21 {
description
"Corrected reference for ifType 303.";
}
revision 2021-05-17 {
description
"Registered ifType 303.";
}
revision 2021-04-22 {
description
"Registered ifType 302.";
}
revision 2021-04-01 {
description
"Updated reference for 301.";
}
revision 2021-02-18 {
description
"Registered ifType 301.";
}
revision 2020-08-27 {
description
"Added missing references.";
}
revision 2020-07-13 {
description
"Added identity cpri.";
}
revision 2020-07-10 {
description
"Registered ifType 300.";
}
revision 2020-01-10 {
description
"Registered ifType 299.";
}
revision 2019-10-16 {
description
"Registered ifType 298.";
}
revision 2019-07-16 {
description
"Registered ifType 297.";
}
revision 2019-06-21 {
description
"Updated reference associated with ifTypes 295-296.";
}
revision 2019-02-08 {
description
"Corrected formatting issue.";
}
revision 2019-01-31 {
description
"Registered ifTypes 295-296.";
}
revision 2018-07-03 {
description
"Corrected revision date.";
}
revision 2018-06-29 {
description
"Corrected formatting issue.";
}
revision 2018-06-28 {
description
"Registered ifTypes 293 and 294.";
}
revision 2018-06-22 {
description
"Registered ifType 292.";
}
revision 2018-06-21 {
description
"Registered ifType 291.";
}
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.984.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
reference
"IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
reference
"IEEE G.9961";
}
identity otnOtsi {
base iana-interface-type;
description
"Optical Tributary Signal.";
reference
"ITU-T G.959.1";
}
identity otnOtuc {
base iana-interface-type;
description
"OTN OTUCn.";
reference
"ITU-T G.709/Y.1331";
}
identity otnOduc {
base iana-interface-type;
description
"OTN ODUC.";
reference
"ITU-T G.709";
}
identity otnOtsig {
base iana-interface-type;
description
"OTN OTUC Signal.";
reference
"ITU-T G.709";
}
identity microwaveCarrierTermination {
base iana-interface-type;
description
"air interface of a single microwave carrier.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity microwaveRadioLinkTerminal {
base iana-interface-type;
description
"radio link interface for one or several aggregated microwave carriers.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity ieee8021axDrni {
base iana-interface-type;
description
"IEEE 802.1AX Distributed Resilient Network Interface.";
reference
"IEEE 802.1AX-Rev-d2-0";
}
identity ax25 {
base iana-interface-type;
description
"AX.25 network interfaces.";
reference
"AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
}
identity ieee19061nanocom {
base iana-interface-type;
description
"Nanoscale and Molecular Communication.";
reference
"IEEE 1906.1-2015";
}
identity cpri {
base iana-interface-type;
description
"Common Public Radio Interface.";
reference
"CPRI v7.0";
}
identity omni {
base iana-interface-type;
description
"Overlay Multilink Network Interface (OMNI).";
reference
"draft-templin-6man-omni-00";
}
identity roe {
base iana-interface-type;
description
"Radio over Ethernet Interface.";
reference
"1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
}
identity p2pOverLan {
base iana-interface-type;
description
"Point to Point over LAN interface.";
reference
"RFC 9296 - ifStackTable for the Point-to-Point (P2P) Interface over a LAN Type: Definition and Examples";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=iana-if-type}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2023-01-26}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.770 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-26: doCommit completed
10:05:32.770 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model iana-if-type with version 2023-01-26
10:05:32.775 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-vlan-types with version 3.1.1 to operational datastore
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-27 allocated with snapshot Version[11e46a72]
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-27 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.1.1}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.1.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan-types";
prefix "oc-vlan-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.1.1";
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "3.1.1";
}
revision "2019-01-31" {
description
"Add TPID_ANY wildcard match and a QinQ list type.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity TPID_TYPES {
description
"Base identity for TPID values that can be matched or that override
the VLAN ethertype value";
}
identity TPID_0X8100 {
base TPID_TYPES;
description
"Default TPID value for 802.1q single-tagged VLANs.";
}
identity TPID_0X88A8 {
base TPID_TYPES;
description
"TPID value for 802.1ad provider bridging, QinQ or
stacked VLANs.";
}
identity TPID_0X9100 {
base TPID_TYPES;
description
"Alternate TPID value.";
}
identity TPID_0X9200 {
base TPID_TYPES;
description
"Alternate TPID value.";
}
identity TPID_ANY {
base TPID_TYPES;
description
"A wildcard that matches any of the generally used TPID values
for singly- or multiply-tagged VLANs. Equivalent to matching
any of TPID_0X8100, TPID_0X88A8, TPID_0X9100 and TPID_0x9200.
This value is only applicable where the TPID of a packet is
being matched.";
}
// typedef statements
// TODO: typedefs should be defined in a vlan-types.yang file.
typedef vlan-id {
type uint16 {
range 1..4094;
}
description
"Type definition representing a single-tagged VLAN";
}
typedef vlan-range {
type string {
// range specified as [lower]..[upper]
pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' +
'40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' +
'[1-9])$';
oc-ext:posix-pattern '^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.\.(409[0-4]|' +
'40[0-8][0-9]|[1-3][0-9]{3}|[1-9][0-9]{1,2}|' +
'[1-9])$';
}
description
"Type definition representing a range of single-tagged
VLANs. A range is specified as x..y where x and y are
valid VLAN IDs (1 <= vlan-id <= 4094). The range is
assumed to be inclusive, such that any VLAN-ID matching
x <= VLAN-ID <= y falls within the range.";
}
typedef qinq-id {
type string {
pattern
'^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.' +
'((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])|\*)$';
oc-ext:posix-pattern
'^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.' +
'((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])|\*)$';
}
description
"Type definition representing a single double-tagged/QinQ VLAN
identifier. The format of a QinQ VLAN-ID is x.y where X is the
'outer' VLAN identifier, and y is the 'inner' VLAN identifier.
Both x and y must be valid VLAN IDs (1 <= vlan-id <= 4094)
with the exception that y may be equal to a wildcard (*). In
cases where y is set to the wildcard, this represents all inner
VLAN identifiers where the outer VLAN identifier is equal to
x.";
}
typedef qinq-id-range {
type union {
type string {
// match cases where the range is specified as x..y.z
pattern
'^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.\.' +
'(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.' +
'((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])|\*)$';
oc-ext:posix-pattern
'^(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.\.' +
'(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.' +
'((409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])|\*)$';
}
type string {
// match cases where the range is specified as x.y..z
pattern
'^(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9]))\.' +
'(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.\.' +
'(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])$';
oc-ext:posix-pattern
'^(\*|(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9]))\.' +
'(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])\.\.' +
'(409[0-4]|40[0-8][0-9]|[1-3][0-9]{3}|' +
'[1-9][0-9]{1,2}|[1-9])$';
}
}
description
"A type definition representing a range of double-tagged/QinQ
VLAN identifiers. The format of a QinQ VLAN-ID range can be
specified in two formats. Where the range is outer VLAN IDs
the range is specified as x..y.z. In this case outer VLAN
identifiers meeting the criteria x <= outer-vlan-id <= y are
accepted if and only if the inner VLAN-ID is equal to y - or
any inner-tag if the wildcard is specified. Alternatively the
ange can be specified as x.y..z. In this case only VLANs with an
outer-vlan-id qual to x are accepted (x may again be the
wildcard). Inner VLANs are accepted if they meet the inequality
y <= inner-vlan-id <= z.";
}
typedef vlan-mode-type {
type enumeration {
enum ACCESS {
description "Access mode VLAN interface (No 802.1q header)";
}
enum TRUNK {
description "Trunk mode VLAN interface";
}
}
description
"VLAN interface mode (trunk or access)";
}
typedef vlan-ref {
type union {
type vlan-id;
type string;
// TODO: string should be changed to leafref to reference
// an existing VLAN. this is not allowed in YANG 1.0 but
// is expected to be in YANG 1.1.
// type leafref {
// path "vlan:vlans/vlan:vlan/vlan:config/vlan:name";
// }
}
description
"Reference to a VLAN by name or id";
}
typedef vlan-stack-action {
type enumeration {
enum PUSH {
description
"Push a VLAN onto the VLAN stack.";
}
enum POP {
description
"Pop a VLAN from the VLAN stack.";
}
enum SWAP {
description
"Swap the VLAN at the top of the VLAN stack.";
}
// TODO: add push-push, pop-pop, push-swap etc
}
description
"Operations that can be performed on a VLAN stack.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-vlan-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=3.1.1}]}
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-27 : Ready
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-27 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-27 is submitted for execution.
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-27: canCommit Started
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-27 can be committed
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-27: preCommit Started
10:05:32.779 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-27: doCommit Started
10:05:32.779 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[11e46a72], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[11e46a72], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[11e46a72], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}]=SimpleContainerNode{version=Version[11e46a72], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2023-01-26 {
description
"Fix incorrect quotation for previous 3 revision statements.";
}
revision 2022-08-24 {
description
"Updated reference for ifType 303.";
}
revision 2022-08-17 {
description
"Changed gpon description to refer to G.984.";
}
revision 2022-03-07 {
description
"Coalesced revision history entries for 2018-06-28.";
}
revision 2021-06-21 {
description
"Corrected reference for ifType 303.";
}
revision 2021-05-17 {
description
"Registered ifType 303.";
}
revision 2021-04-22 {
description
"Registered ifType 302.";
}
revision 2021-04-01 {
description
"Updated reference for 301.";
}
revision 2021-02-18 {
description
"Registered ifType 301.";
}
revision 2020-08-27 {
description
"Added missing references.";
}
revision 2020-07-13 {
description
"Added identity cpri.";
}
revision 2020-07-10 {
description
"Registered ifType 300.";
}
revision 2020-01-10 {
description
"Registered ifType 299.";
}
revision 2019-10-16 {
description
"Registered ifType 298.";
}
revision 2019-07-16 {
description
"Registered ifType 297.";
}
revision 2019-06-21 {
description
"Updated reference associated with ifTypes 295-296.";
}
revision 2019-02-08 {
description
"Corrected formatting issue.";
}
revision 2019-01-31 {
description
"Registered ifTypes 295-296.";
}
revision 2018-07-03 {
description
"Corrected revision date.";
}
revision 2018-06-29 {
description
"Corrected formatting issue.";
}
revision 2018-06-28 {
description
"Registered ifTypes 293 and 294.";
}
revision 2018-06-22 {
description
"Registered ifType 292.";
}
revision 2018-06-21 {
description
"Registered ifType 291.";
}
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.984.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
reference
"IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
reference
"IEEE G.9961";
}
identity otnOtsi {
base iana-interface-type;
description
"Optical Tributary Signal.";
reference
"ITU-T G.959.1";
}
identity otnOtuc {
base iana-interface-type;
description
"OTN OTUCn.";
reference
"ITU-T G.709/Y.1331";
}
identity otnOduc {
base iana-interface-type;
description
"OTN ODUC.";
reference
"ITU-T G.709";
}
identity otnOtsig {
base iana-interface-type;
description
"OTN OTUC Signal.";
reference
"ITU-T G.709";
}
identity microwaveCarrierTermination {
base iana-interface-type;
description
"air interface of a single microwave carrier.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity microwaveRadioLinkTerminal {
base iana-interface-type;
description
"radio link interface for one or several aggregated microwave carriers.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity ieee8021axDrni {
base iana-interface-type;
description
"IEEE 802.1AX Distributed Resilient Network Interface.";
reference
"IEEE 802.1AX-Rev-d2-0";
}
identity ax25 {
base iana-interface-type;
description
"AX.25 network interfaces.";
reference
"AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
}
identity ieee19061nanocom {
base iana-interface-type;
description
"Nanoscale and Molecular Communication.";
reference
"IEEE 1906.1-2015";
}
identity cpri {
base iana-interface-type;
description
"Common Public Radio Interface.";
reference
"CPRI v7.0";
}
identity omni {
base iana-interface-type;
description
"Overlay Multilink Network Interface (OMNI).";
reference
"draft-templin-6man-omni-00";
}
identity roe {
base iana-interface-type;
description
"Radio over Ethernet Interface.";
reference
"1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
}
identity p2pOverLan {
base iana-interface-type;
description
"Point to Point over LAN interface.";
reference
"RFC 9296 - ifStackTable for the Point-to-Point (P2P) Interface over a LAN Type: Definition and Examples";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=iana-if-type}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2023-01-26}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7a39674e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7a39674e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7a39674e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}]=SimpleContainerNode{version=Version[11e46a72], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2023-01-26 {
description
"Fix incorrect quotation for previous 3 revision statements.";
}
revision 2022-08-24 {
description
"Updated reference for ifType 303.";
}
revision 2022-08-17 {
description
"Changed gpon description to refer to G.984.";
}
revision 2022-03-07 {
description
"Coalesced revision history entries for 2018-06-28.";
}
revision 2021-06-21 {
description
"Corrected reference for ifType 303.";
}
revision 2021-05-17 {
description
"Registered ifType 303.";
}
revision 2021-04-22 {
description
"Registered ifType 302.";
}
revision 2021-04-01 {
description
"Updated reference for 301.";
}
revision 2021-02-18 {
description
"Registered ifType 301.";
}
revision 2020-08-27 {
description
"Added missing references.";
}
revision 2020-07-13 {
description
"Added identity cpri.";
}
revision 2020-07-10 {
description
"Registered ifType 300.";
}
revision 2020-01-10 {
description
"Registered ifType 299.";
}
revision 2019-10-16 {
description
"Registered ifType 298.";
}
revision 2019-07-16 {
description
"Registered ifType 297.";
}
revision 2019-06-21 {
description
"Updated reference associated with ifTypes 295-296.";
}
revision 2019-02-08 {
description
"Corrected formatting issue.";
}
revision 2019-01-31 {
description
"Registered ifTypes 295-296.";
}
revision 2018-07-03 {
description
"Corrected revision date.";
}
revision 2018-06-29 {
description
"Corrected formatting issue.";
}
revision 2018-06-28 {
description
"Registered ifTypes 293 and 294.";
}
revision 2018-06-22 {
description
"Registered ifType 292.";
}
revision 2018-06-21 {
description
"Registered ifType 291.";
}
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.984.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
reference
"IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
reference
"IEEE G.9961";
}
identity otnOtsi {
base iana-interface-type;
description
"Optical Tributary Signal.";
reference
"ITU-T G.959.1";
}
identity otnOtuc {
base iana-interface-type;
description
"OTN OTUCn.";
reference
"ITU-T G.709/Y.1331";
}
identity otnOduc {
base iana-interface-type;
description
"OTN ODUC.";
reference
"ITU-T G.709";
}
identity otnOtsig {
base iana-interface-type;
description
"OTN OTUC Signal.";
reference
"ITU-T G.709";
}
identity microwaveCarrierTermination {
base iana-interface-type;
description
"air interface of a single microwave carrier.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity microwaveRadioLinkTerminal {
base iana-interface-type;
description
"radio link interface for one or several aggregated microwave carriers.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity ieee8021axDrni {
base iana-interface-type;
description
"IEEE 802.1AX Distributed Resilient Network Interface.";
reference
"IEEE 802.1AX-Rev-d2-0";
}
identity ax25 {
base iana-interface-type;
description
"AX.25 network interfaces.";
reference
"AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
}
identity ieee19061nanocom {
base iana-interface-type;
description
"Nanoscale and Molecular Communication.";
reference
"IEEE 1906.1-2015";
}
identity cpri {
base iana-interface-type;
description
"Common Public Radio Interface.";
reference
"CPRI v7.0";
}
identity omni {
base iana-interface-type;
description
"Overlay Multilink Network Interface (OMNI).";
reference
"draft-templin-6man-omni-00";
}
identity roe {
base iana-interface-type;
description
"Radio over Ethernet Interface.";
reference
"1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
}
identity p2pOverLan {
base iana-interface-type;
description
"Point to Point over LAN interface.";
reference
"RFC 9296 - ifStackTable for the Point-to-Point (P2P) Interface over a LAN Type: Definition and Examples";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=iana-if-type}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2023-01-26}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.794 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-27: doCommit completed
10:05:32.794 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-vlan-types with version 3.1.1
10:05:32.808 [mdsal-subscription-counters5] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@40a2b5f6} unlocked
10:05:32.808 [mdsal-subscription-counters5] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@40a2b5f6} readied
10:05:32.809 [mdsal-subscription-counters5] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Submitting transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@40a2b5f6}
10:05:32.809 [mdsal-subscription-counters5] DEBUG org.opendaylight.mdsal.dom.spi.AbstractPingPongTransactionChain -- Transaction PingPongTransaction{delegate=org.opendaylight.mdsal.dom.spi.DOMForwardedReadWriteTransaction@40a2b5f6} completed successfully
10:05:32.809 [mdsal-subscription-counters5] DEBUG org.opendaylight.restconf.server.mdsal.MdsalRestconfStreamRegistry -- Subscription receivers updated successfully
10:05:32.816 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model openconfig-system with version 0.10.0 to operational datastore
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-28 allocated with snapshot Version[7a39674e]
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-28 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.10.0}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.10.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system";
prefix "oc-sys";
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa { prefix oc-aaa; }
import openconfig-system-logging { prefix oc-log; }
import openconfig-system-terminal { prefix oc-sys-term; }
import openconfig-procmon { prefix oc-proc; }
import openconfig-alarms { prefix oc-alarms; }
import openconfig-messages { prefix oc-messages; }
import openconfig-license { prefix oc-license; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing system-wide services and functions on
network devices.
Portions of this code were derived from IETF RFC 7317.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.10.0";
revision "2020-04-13" {
description
"Remove the existing grpc-service, and add a new list
of the gRPC servers in a new module.";
reference "0.10.0";
}
revision "2020-03-25" {
description
"Fix typo in description statement for ipv4-address
list.";
reference "0.9.1";
}
revision "2020-01-07" {
description
"Add import of license management model.";
reference "0.9.0";
}
revision "2019-03-15" {
description
"Update boot time to be nanoseconds since epoch.";
reference "0.8.0";
}
revision "2019-01-29" {
description
"Add messages module to the system model";
reference "0.7.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.6.1";
}
revision "2018-07-17" {
description
"Add gRPC server data";
reference "0.6.0";
}
revision "2018-01-21" {
description
"Add cpu utilization data";
reference "0.5.0";
}
revision "2017-12-15" {
description
"Add alarms to the system model";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity NTP_AUTH_TYPE {
description
"Base identity for encryption schemes supported for NTP
authentication keys";
}
identity NTP_AUTH_MD5 {
base NTP_AUTH_TYPE;
description
"MD5 encryption method";
}
// typedef statements
typedef timezone-name-type {
type string;
description
"A time zone name as used by the Time Zone Database,
sometimes referred to as the 'Olson Database'.
The exact set of valid values is an implementation-specific
matter. Client discovery of the exact set of time zone names
for a particular server is out of scope.";
reference
"BCP 175: Procedures for Maintaining the Time Zone Database";
}
// grouping statements
grouping system-clock-config {
description
"Configuration data for system-wide clock configuration";
leaf timezone-name {
type timezone-name-type;
description
"The TZ database name to use for the system, such
as 'Europe/Stockholm'.";
reference "IANA Time Zone Database
http://www.iana.org/time-zones";
}
}
grouping system-clock-state {
description
"Operational state data for system-wide clock configuration";
}
grouping system-clock-top {
description
"Top-level grouping for system-wide clock configuration";
container clock {
description
"Top-level container for clock configuration data";
container config {
description
"Configuration data for system clock";
uses system-clock-config;
}
container state {
config false;
description
"Operational state data for system clock";
uses system-clock-config;
uses system-clock-state;
}
}
}
grouping system-global-config {
description "system-wide configuration parameters";
leaf hostname {
type oc-inet:domain-name;
description
"The hostname of the device -- should be a single domain
label, without the domain.";
}
leaf domain-name {
type oc-inet:domain-name;
description
"Specifies the domain name used to form fully qualified name
for unqualified hostnames.";
}
leaf login-banner {
type string;
description
"The console login message displayed before the login prompt,
i.e., before a user logs into the system.";
}
leaf motd-banner {
type string;
description
"The console message displayed after a user logs into the
system. They system may append additional standard
information such as the current system date and time, uptime,
last login timestamp, etc.";
}
}
grouping system-global-state {
description
"Global operational state data for the system";
leaf current-datetime {
type oc-yang:date-and-time;
description
"The current system date and time.";
}
leaf boot-time {
type oc-types:timeticks64;
units "nanoseconds";
description
"This timestamp indicates the time that the system was last
restarted. The value is the timestamp in nanoseconds relative
to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping system-dns-config {
description "DNS / resolver related configuration data";
leaf-list search {
type oc-inet:domain-name;
ordered-by user;
description
"An ordered list of domains to search when resolving
a host name.";
}
}
grouping system-dns-state {
description
"Operational state data for system DNS resolver";
}
grouping system-dns-servers-config {
description
"Configuration data for DNS resolvers";
//RFC 7317 includes a single-value choice statement to for
//TCP and UDP transport. This has been removed since it the
//transport protocol is not generally available as an options
//on target devices. It may be added back if and when needed.
leaf address {
type oc-inet:ip-address;
description
"The address of the DNS server, can be either IPv4
or IPv6.";
}
leaf port {
type oc-inet:port-number;
default 53;
description
"The port number of the DNS server.";
}
//RFC 7317 includes resolver timeout and attempts options. These
//have been omitted as they are not available on many targets. If
//and when they are required, they may be added back in.
}
grouping system-dns-static-config {
description
"Configuration data for static host entries";
leaf hostname {
type string;
description
"Hostname for the static DNS entry";
}
leaf-list alias {
type string;
description
"Additional aliases for the hostname";
}
leaf-list ipv4-address {
type oc-inet:ipv4-address;
description
"List of IPv4 addresses for the host entry";
}
leaf-list ipv6-address {
type oc-inet:ipv6-address;
description
"List of IPv6 addresses for the host entry";
}
}
grouping system-dns-static-state {
description
"Operational state data for static host entries";
}
grouping system-dns-static-top {
description
"Top-level grouping for static DNS host entries";
container host-entries {
description
"Enclosing container for list of static host entries";
list host-entry {
key "hostname";
description
"List of static host entries";
leaf hostname {
type leafref {
path "../config/hostname";
}
description
"Reference to the hostname list key";
}
container config {
description
"Configuration data for static host entries";
uses system-dns-static-config;
}
container state {
config false;
description
"Operational state data for static host entries";
uses system-dns-static-config;
uses system-dns-static-state;
}
}
}
}
grouping system-dns-servers-state {
description
"Operational state data for DNS resolvers";
}
grouping system-dns-servers-top {
description
"Top-level grouping for the list of DNS resolvers.";
container servers {
description
"Enclosing container for DNS resolver list";
list server {
key "address";
ordered-by user;
description
"List of the DNS servers that the resolver should query.
When the resolver is invoked by a calling application, it
sends the query to the first name server in this list. If
no response has been received within 'timeout' seconds,
the resolver continues with the next server in the list.
If no response is received from any server, the resolver
continues with the first server again. When the resolver
has traversed the list 'attempts' times without receiving
any response, it gives up and returns an error to the
calling application.
Implementations MAY limit the number of entries in this
list.";
leaf address {
type leafref {
path "../config/address";
}
description
"References the configured address of the DNS server";
}
container config {
description
"Configuration data for each DNS resolver";
uses system-dns-servers-config;
}
container state {
config false;
description
"Operational state data for each DNS resolver";
uses system-dns-servers-config;
uses system-dns-servers-state;
}
}
}
}
grouping system-dns-top {
description
"Top-level grouping for DNS / resolver config and operational
state data";
container dns {
description
"Enclosing container for DNS resolver data";
container config {
description
"Configuration data for the DNS resolver";
uses system-dns-config;
}
container state {
config false;
description
"Operational state data for the DNS resolver";
uses system-dns-config;
uses system-dns-state;
}
uses system-dns-servers-top;
uses system-dns-static-top;
}
}
grouping system-ntp-server-config {
description
"Configuration data for NTP servers";
leaf address {
type oc-inet:host;
description
"The address or hostname of the NTP server.";
}
leaf port {
type oc-inet:port-number;
default 123;
description
"The port number of the NTP server.";
}
leaf version {
type uint8 {
range 1..4;
}
default 4;
description
"Version number to put in outgoing NTP packets";
}
leaf association-type {
type enumeration {
enum SERVER {
description
"Use client association mode. This device
will not provide synchronization to the
configured NTP server.";
}
enum PEER {
description
"Use symmetric active association mode.
This device may provide synchronization
to the configured NTP server.";
}
enum POOL {
description
"Use client association mode with one or
more of the NTP servers found by DNS
resolution of the domain name given by
the 'address' leaf. This device will not
provide synchronization to the servers.";
}
}
default SERVER;
description
"The desired association type for this NTP server.";
}
leaf iburst {
type boolean;
default false;
description
"Indicates whether this server should enable burst
synchronization or not.";
}
leaf prefer {
type boolean;
default false;
description
"Indicates whether this server should be preferred
or not.";
}
}
grouping system-ntp-server-state {
description
"Operational state data for NTP servers";
leaf stratum {
type uint8;
description
"Indicates the level of the server in the NTP hierarchy. As
stratum number increases, the accuracy is degraded. Primary
servers are stratum while a maximum value of 16 indicates
unsynchronized. The values have the following specific
semantics:
| 0 | unspecified or invalid
| 1 | primary server (e.g., equipped with a GPS receiver)
| 2-15 | secondary server (via NTP)
| 16 | unsynchronized
| 17-255 | reserved";
reference
"RFC 5905 - Network Time Protocol Version 4: Protocol and
Algorithms Specification";
}
leaf root-delay {
type uint32;
// TODO: reconsider units for these values -- the spec defines
// rootdelay and rootdisperson as 2 16-bit integers for seconds
// and fractional seconds, respectively. This gives a
// precision of ~15 us (2^-16). Using milliseconds here based
// on what implementations typically provide and likely lack
// of utility for less than millisecond precision with NTP
// time sync.
units "milliseconds";
description
"The round-trip delay to the server, in milliseconds.";
reference
"RFC 5905 - Network Time Protocol Version 4: Protocol and
Algorithms Specification";
}
leaf root-dispersion {
type uint64;
units "milliseconds";
description
"Dispersion (epsilon) represents the maximum error inherent
in the measurement";
reference
"RFC 5905 - Network Time Protocol Version 4: Protocol and
Algorithms Specification";
}
leaf offset {
type uint64;
units "milliseconds";
description
"Estimate of the current time offset from the peer. This is
the time difference between the local and reference clock.";
}
leaf poll-interval {
type uint32;
units "seconds";
description
"Polling interval of the peer";
}
}
grouping system-ntp-server-top {
description
"Top-level grouping for the list of NTP servers";
container servers {
description
"Enclosing container for the list of NTP servers";
list server {
key "address";
description
"List of NTP servers to use for system clock
synchronization. If '/system/ntp/enabled'
is 'true', then the system will attempt to
contact and utilize the specified NTP servers.";
leaf address {
type leafref {
path "../config/address";
}
description
"References the configured address or hostname of the
NTP server.";
}
container config {
description
"Configuration data for an NTP server.";
uses system-ntp-server-config;
}
container state {
config false;
description
"Operational state data for an NTP server.";
uses system-ntp-server-config;
uses system-ntp-server-state;
}
}
}
}
grouping system-ntp-auth-keys-config {
description
"Configuration data ";
leaf key-id {
type uint16;
description
"Integer identifier used by the client and server to
designate a secret key. The client and server must use
the same key id.";
}
leaf key-type {
type identityref {
base NTP_AUTH_TYPE;
}
description
"Encryption type used for the NTP authentication key";
}
leaf key-value {
type string;
description
"NTP authentication key value";
}
}
grouping system-ntp-auth-keys-state {
description
"Operational state data for NTP auth key data";
}
grouping system-ntp-auth-keys-top {
description
"Top-level grouping for NTP auth key data";
container ntp-keys {
description
"Enclosing container for list of NTP authentication keys";
list ntp-key {
key "key-id";
description
"List of NTP authentication keys";
leaf key-id {
type leafref {
path "../config/key-id";
}
description
"Reference to auth key-id list key";
}
container config {
description
"Configuration data for NTP auth keys";
uses system-ntp-auth-keys-config;
}
container state {
config false;
description
"Operational state data for NTP auth keys";
uses system-ntp-auth-keys-config;
uses system-ntp-auth-keys-state;
}
}
}
}
grouping system-ntp-config {
description
"Configuration data for system-wide NTP operation.";
leaf enabled {
type boolean;
default false;
description
"Enables the NTP protocol and indicates that the system should
attempt to synchronize the system clock with an NTP server
from the servers defined in the 'ntp/server' list.";
}
leaf ntp-source-address {
type oc-inet:ip-address;
description
"Source address to use on outgoing NTP packets";
}
leaf enable-ntp-auth {
type boolean;
default false;
description
"Enable or disable NTP authentication -- when enabled, the
system will only use packets containing a trusted
authentication key to synchronize the time.";
}
}
grouping system-ntp-state {
description
"Operational state data for system-wide NTP operation.";
leaf auth-mismatch {
type oc-yang:counter64;
description
"Count of the number of NTP packets received that were not
processed due to authentication mismatch.";
}
}
grouping system-ntp-top {
description
"Top-level grouping for configuration and state data for NTP";
container ntp {
description
"Top-level container for NTP configuration and state";
container config {
description
"Configuration data for NTP client.";
uses system-ntp-config;
}
container state {
config false;
description
"Operational state data for NTP services.";
uses system-ntp-config;
uses system-ntp-state;
}
uses system-ntp-auth-keys-top;
uses system-ntp-server-top;
}
}
grouping system-memory-config {
description
"Configuration data for system memory";
}
grouping system-memory-state {
description
"Operational state data for system memory";
leaf physical {
type uint64;
units bytes;
// TODO: consider making units in megabytes
description
"Reports the total physical memory available on the
system.";
}
leaf reserved {
type uint64;
units bytes;
description
"Memory reserved for system use";
}
}
grouping system-memory-top {
description
"Top-level grouping for system memory data definitions";
container memory {
description
"Top-level container for system memory data";
container config {
description
"Configuration data for system memory";
uses system-memory-config;
}
container state {
config false;
description
"Operational state data for system memory";
uses system-memory-config;
uses system-memory-state;
}
}
}
grouping system-cpu-state {
description
"Operational state data for the system CPU(s)";
leaf index {
type union {
type enumeration {
enum ALL {
description
"Index value indicating all CPUs in the system";
}
}
type uint32;
}
description
"The CPU index for each processor core on the system. On a
single-core system, the index should be zero. The ALL
index signifies an aggregation of the CPU utilization
statistics over all cores in the system.";
}
container total {
description
"Total CPU utilization.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container user {
description
"Percentage of CPU time spent running in user space.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container kernel {
description
"Percentage of CPU time spent running in kernel space.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container nice {
description
"Percentage of CPU time spent running low-priority (niced)
user processes.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container idle {
description
"Percentage of CPU time spent idle.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container wait {
description
"Percentage of CPU time spent waiting for I/O.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container hardware-interrupt {
description
"Percentage of CPU time spent servicing hardware interrupts.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container software-interrupt {
description
"Percentage of CPU time spent servicing software interrupts";
uses oc-types:avg-min-max-instant-stats-pct;
}
}
grouping system-cpu-top {
description
"Top-level grouping for system CPU data";
container cpus {
config false;
description
"Enclosing container for the list of CPU cores on the
system";
list cpu {
key "index";
description
"List of CPU cores on the system (including logical CPUs
on hyperthreaded systems), keyed by either a numerical
index, or the ALL value for an entry representing the
aggregation across all CPUs.";
leaf index {
type leafref {
path "../state/index";
}
description
"Reference to list key";
}
container state {
description
"Operational state data for the system CPU(s)";
uses system-cpu-state;
}
}
}
}
grouping system-top {
description
"Top level system data containers";
container system {
description
"Enclosing container for system-related configuration and
operational state data";
container config {
description "Global configuration data for the system";
uses system-global-config;
}
container state {
config false;
description "Global operational state data for the system";
uses system-global-config;
uses system-global-state;
}
uses system-clock-top;
uses system-dns-top;
uses system-ntp-top;
uses oc-sys-term:system-ssh-server-top;
uses oc-sys-term:system-telnet-server-top;
uses oc-log:logging-top;
uses oc-aaa:aaa-top;
uses system-memory-top;
uses system-cpu-top;
uses oc-proc:procmon-processes-top;
uses oc-alarms:alarms-top;
uses oc-messages:messages-top;
uses oc-license:license-top;
}
}
// data definition statements
uses system-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.10.0}]}
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-28 : Ready
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-28 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-28 is submitted for execution.
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-28: canCommit Started
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-28 can be committed
10:05:32.827 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-28: preCommit Started
10:05:32.828 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-28: doCommit Started
10:05:32.828 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[7a39674e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[7a39674e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[7a39674e], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}]=SimpleContainerNode{version=Version[11e46a72], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2023-01-26 {
description
"Fix incorrect quotation for previous 3 revision statements.";
}
revision 2022-08-24 {
description
"Updated reference for ifType 303.";
}
revision 2022-08-17 {
description
"Changed gpon description to refer to G.984.";
}
revision 2022-03-07 {
description
"Coalesced revision history entries for 2018-06-28.";
}
revision 2021-06-21 {
description
"Corrected reference for ifType 303.";
}
revision 2021-05-17 {
description
"Registered ifType 303.";
}
revision 2021-04-22 {
description
"Registered ifType 302.";
}
revision 2021-04-01 {
description
"Updated reference for 301.";
}
revision 2021-02-18 {
description
"Registered ifType 301.";
}
revision 2020-08-27 {
description
"Added missing references.";
}
revision 2020-07-13 {
description
"Added identity cpri.";
}
revision 2020-07-10 {
description
"Registered ifType 300.";
}
revision 2020-01-10 {
description
"Registered ifType 299.";
}
revision 2019-10-16 {
description
"Registered ifType 298.";
}
revision 2019-07-16 {
description
"Registered ifType 297.";
}
revision 2019-06-21 {
description
"Updated reference associated with ifTypes 295-296.";
}
revision 2019-02-08 {
description
"Corrected formatting issue.";
}
revision 2019-01-31 {
description
"Registered ifTypes 295-296.";
}
revision 2018-07-03 {
description
"Corrected revision date.";
}
revision 2018-06-29 {
description
"Corrected formatting issue.";
}
revision 2018-06-28 {
description
"Registered ifTypes 293 and 294.";
}
revision 2018-06-22 {
description
"Registered ifType 292.";
}
revision 2018-06-21 {
description
"Registered ifType 291.";
}
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.984.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
reference
"IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
reference
"IEEE G.9961";
}
identity otnOtsi {
base iana-interface-type;
description
"Optical Tributary Signal.";
reference
"ITU-T G.959.1";
}
identity otnOtuc {
base iana-interface-type;
description
"OTN OTUCn.";
reference
"ITU-T G.709/Y.1331";
}
identity otnOduc {
base iana-interface-type;
description
"OTN ODUC.";
reference
"ITU-T G.709";
}
identity otnOtsig {
base iana-interface-type;
description
"OTN OTUC Signal.";
reference
"ITU-T G.709";
}
identity microwaveCarrierTermination {
base iana-interface-type;
description
"air interface of a single microwave carrier.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity microwaveRadioLinkTerminal {
base iana-interface-type;
description
"radio link interface for one or several aggregated microwave carriers.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity ieee8021axDrni {
base iana-interface-type;
description
"IEEE 802.1AX Distributed Resilient Network Interface.";
reference
"IEEE 802.1AX-Rev-d2-0";
}
identity ax25 {
base iana-interface-type;
description
"AX.25 network interfaces.";
reference
"AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
}
identity ieee19061nanocom {
base iana-interface-type;
description
"Nanoscale and Molecular Communication.";
reference
"IEEE 1906.1-2015";
}
identity cpri {
base iana-interface-type;
description
"Common Public Radio Interface.";
reference
"CPRI v7.0";
}
identity omni {
base iana-interface-type;
description
"Overlay Multilink Network Interface (OMNI).";
reference
"draft-templin-6man-omni-00";
}
identity roe {
base iana-interface-type;
description
"Radio over Ethernet Interface.";
reference
"1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
}
identity p2pOverLan {
base iana-interface-type;
description
"Point to Point over LAN interface.";
reference
"RFC 9296 - ifStackTable for the Point-to-Point (P2P) Interface over a LAN Type: Definition and Examples";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=iana-if-type}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2023-01-26}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}} to MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[6bc5dbd2], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[6bc5dbd2], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[6bc5dbd2], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$[$=(,=)*][$[$]]
Common hash functions include:
id | hash function
---+---------------
1 | MD5
2a| Blowfish
2y| Blowfish (correct handling of 8-bit chars)
5 | SHA-256
6 | SHA-512
These may not all be supported by a target device.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}]=SimpleContainerNode{version=Version[c6616be], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-procmon, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-procmon {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/procmon";
prefix "oc-proc";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides data definitions for process health
monitoring of one or more processes running on the system.";
oc-ext:openconfig-version "0.4.0";
revision "2019-03-15" {
description
"Update process start time to be an absolute timestamp,
ensure that the units for CPU time are expressed correctly.
Update cpu-usage leaves to commonly use counter64 for consumed
CPU time.";
reference "0.4.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping procmon-processes-top {
description
"Top level grouping for attributes for processes.";
container processes {
description
"Parameters related to all monitored processes";
list process {
key "pid";
config false;
description
"List of monitored processes";
leaf pid {
type leafref {
path "../state/pid";
}
description
"Reference to the process pid key";
}
container state {
config false;
description
"State parameters related to monitored processes";
uses procmon-process-attributes-state;
}
}
}
}
grouping procmon-process-attributes-state {
description
"Attributes state definitions for a process";
leaf pid {
type uint64;
description
"The process pid";
}
leaf name {
type string;
description
"The process name";
}
leaf-list args {
type string;
description
"Current process command line arguments. Arguments with
a parameter (e.g., --option 10 or -option=10) should be
represented as a single element of the list with the
argument name and parameter together. Flag arguments, i.e.,
those without a parameter should also be in their own list
element.";
}
leaf start-time {
type oc-types:timeticks64;
description
"The time at which this process started,
relative to the UNIX epoch. The system must be
synchronized such that the start-time can be
reported accurately, otherwise it should not be reported.";
}
leaf cpu-usage-user {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in user mode in
nanoseconds.";
}
leaf cpu-usage-system {
type oc-yang:counter64;
units "nanoseconds";
description
"CPU time consumed by this process in kernel mode.";
}
leaf cpu-utilization {
type oc-types:percentage;
description
"The percentage of CPU that is being used by the process.";
}
leaf memory-usage {
type uint64;
units "bytes";
description
"Bytes allocated and still in use by the process";
}
leaf memory-utilization {
type oc-types:percentage;
description
"The percentage of RAM that is being used by the process.";
}
}
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-procmon}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.4.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[6cd44e4b], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarm-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarm-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms/types";
prefix "oc-alarm-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity OPENCONFIG_ALARM_TYPE_ID {
description
"Base identity for alarm type ID profiles";
}
identity AIS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an alarm indication signal type of alarm";
}
identity EQPT {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines an equipment related type of alarm that is specific
to the physical hardware";
}
identity LOS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a loss of signal type of alarm";
}
identity OTS {
base OPENCONFIG_ALARM_TYPE_ID;
description
"Defines a optical transport signal type of alarm";
}
identity OPENCONFIG_ALARM_SEVERITY {
description
"Base identity for alarm severity profiles. Derived
identities are based on contents of the draft
IETF YANG Alarm Module";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
identity UNKNOWN {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that the severity level could not be determined.
This level SHOULD be avoided.";
}
identity MINOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the existence of a non-service affecting fault
condition and that corrective action should be taken in
order to prevent a more serious (for example, service
affecting) fault. Such a severity can be reported, for
example, when the detected alarm condition is not currently
degrading the capacity of the resource";
}
identity WARNING {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates the detection of a potential or impending service
affecting fault, before any significant effects have been felt.
Action should be taken to further diagnose (if necessary) and
correct the problem in order to prevent it from becoming a more
serious service affecting fault.";
}
identity MAJOR {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has developed
and an urgent corrective action is required. Such a severity
can be reported, for example, when there is a severe
degradation in the capability of the resource and its full
capability must be restored.";
}
identity CRITICAL {
base OPENCONFIG_ALARM_SEVERITY;
description
"Indicates that a service affecting condition has occurred
and an immediate corrective action is required. Such a
severity can be reported, for example, when a resource becomes
totally out of service and its capability must be restored.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarm-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}]=SimpleContainerNode{version=Version[3a7ead28], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-ethernet, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.11.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-ethernet {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/ethernet";
prefix "oc-eth";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import iana-if-type { prefix ianaift; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing Ethernet interfaces -- augments the OpenConfig
model for interface configuration and state.";
oc-ext:openconfig-version "2.11.0";
revision "2021-06-09" {
description
"Add support for standalone link training.";
reference "2.11.0";
}
revision "2021-05-17" {
description
"Add ethernet counters: in-carrier-errors,
in-interrupted-tx, in-late-collision, in-mac-errors-rx,
in-single-collision, in-symbol-error and out-mac-errors-tx";
reference "2.10.0";
}
revision "2021-03-30" {
description
"Add counter for drops due to oversized frames.";
reference "2.9.0";
}
revision "2020-05-06" {
description
"Minor formatting fix.";
reference "2.8.1";
}
revision "2020-05-06" {
description
"Add 200G, 400G, 600G and 800G Ethernet speeds.";
reference "2.8.0";
}
revision "2020-05-05" {
description
"Fix when statement checks to use rw paths when
from a rw context.";
reference "2.7.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.7.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.6.2";
}
revision "2018-09-04" {
description
"Remove in-crc-align-errors as it is a duplicate of
in-crc-errors";
reference "2.6.1";
}
revision "2018-08-28" {
description
"Add Ethernet counter in-block-errors";
reference "2.6.0";
}
revision "2018-07-02" {
description
"Add new ethernet counters of in-undersize-frames,
in-crc-align-errors and the distribution container";
reference "2.5.0";
}
revision "2018-04-10" {
description
"Add identities for 2.5 and 5 Gbps.";
reference "2.4.0";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity ETHERNET_SPEED {
description "base type to specify available Ethernet link
speeds";
}
identity SPEED_10MB {
base ETHERNET_SPEED;
description "10 Mbps Ethernet";
}
identity SPEED_100MB {
base ETHERNET_SPEED;
description "100 Mbps Ethernet";
}
identity SPEED_1GB {
base ETHERNET_SPEED;
description "1 Gbps Ethernet";
}
identity SPEED_2500MB {
base ETHERNET_SPEED;
description "2.5 Gbps Ethernet";
}
identity SPEED_5GB {
base ETHERNET_SPEED;
description "5 Gbps Ethernet";
}
identity SPEED_10GB {
base ETHERNET_SPEED;
description "10 Gbps Ethernet";
}
identity SPEED_25GB {
base ETHERNET_SPEED;
description "25 Gbps Ethernet";
}
identity SPEED_40GB {
base ETHERNET_SPEED;
description "40 Gbps Ethernet";
}
identity SPEED_50GB {
base ETHERNET_SPEED;
description "50 Gbps Ethernet";
}
identity SPEED_100GB {
base ETHERNET_SPEED;
description "100 Gbps Ethernet";
}
identity SPEED_200GB {
base ETHERNET_SPEED;
description "200 Gbps Ethernet";
}
identity SPEED_400GB {
base ETHERNET_SPEED;
description "400 Gbps Ethernet";
}
identity SPEED_600GB {
base ETHERNET_SPEED;
description "600 Gbps Ethernet";
}
identity SPEED_800GB {
base ETHERNET_SPEED;
description "800 Gbps Ethernet";
}
identity SPEED_UNKNOWN {
base ETHERNET_SPEED;
description
"Interface speed is unknown. Systems may report
speed UNKNOWN when an interface is down or unpopuplated (e.g.,
pluggable not present).";
}
// typedef statements
// grouping statements
grouping ethernet-interface-config {
description "Configuration items for Ethernet interfaces";
leaf mac-address {
type oc-yang:mac-address;
description
"Assigns a MAC address to the Ethernet interface. If not
specified, the corresponding operational state leaf is
expected to show the system-assigned MAC address.";
}
leaf auto-negotiate {
type boolean;
default true;
description
"Set to TRUE to request the interface to auto-negotiate
transmission parameters with its peer interface. When
set to FALSE, the transmission parameters are specified
manually.";
reference
"IEEE 802.3-2012 auto-negotiation transmission parameters";
}
leaf standalone-link-training {
type boolean;
default false;
description
"Link training is automatic tuning of the SerDes transmit and
receive parameters to ensure an optimal connection over copper
links. It is normally run as part of the auto negotiation
sequence as specified in IEEE 802.3 Clause 73.
Standalone link training is used when full auto negotiation is
not desired on an Ethernet link but link training is needed.
It is configured by setting the standalone-link-training leaf
to TRUE and augo-negotiate leaf to FALSE.
Note: If auto-negotiate is true, then the value of standalone
link training leaf will be ignored.";
}
leaf duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is TRUE, this optionally sets the
duplex mode that will be advertised to the peer. If
unspecified, the interface should negotiate the duplex mode
directly (typically full-duplex). When auto-negotiate is
FALSE, this sets the duplex mode on the interface directly.";
}
leaf port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is TRUE, this optionally sets the
port-speed mode that will be advertised to the peer for
negotiation. If unspecified, it is expected that the
interface will select the highest speed available based on
negotiation. When auto-negotiate is set to FALSE, sets the
link speed to a fixed value -- supported values are defined
by ETHERNET_SPEED identities";
}
leaf enable-flow-control {
type boolean;
default false;
description
"Enable or disable flow control for this interface.
Ethernet flow control is a mechanism by which a receiver
may send PAUSE frames to a sender to stop transmission for
a specified time.
This setting should override auto-negotiated flow control
settings. If left unspecified, and auto-negotiate is TRUE,
flow control mode is negotiated with the peer interface.";
reference
"IEEE 802.3x";
}
}
grouping ethernet-interface-state-counters {
description
"Ethernet-specific counters and statistics";
// ingress counters
leaf in-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames received on the interface";
}
leaf in-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames received on the interface";
}
leaf in-oversize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
longer than 1518 octets (excluding framing bits,
but including FCS octets) and were otherwise
well formed.";
}
leaf in-undersize-frames {
type oc-yang:counter64;
description
"The total number of frames received that were
less than 64 octets long (excluding framing bits,
but including FCS octets) and were otherwise well
formed.";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsUndersizePkts";
}
leaf in-jabber-frames {
type oc-yang:counter64;
description
"Number of jabber frames received on the
interface. Jabber frames are typically defined as oversize
frames which also have a bad CRC. Implementations may use
slightly different definitions of what constitutes a jabber
frame. Often indicative of a NIC hardware problem.";
}
leaf in-fragment-frames {
type oc-yang:counter64;
description
"The total number of frames received that were less than
64 octets in length (excluding framing bits but including
FCS octets) and had either a bad Frame Check Sequence
(FCS) with an integral number of octets (FCS Error) or a
bad FCS with a non-integral number of octets (Alignment
Error).";
}
leaf in-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames received on the interface";
}
leaf in-crc-errors {
type oc-yang:counter64;
description
"The total number of frames received that
had a length (excluding framing bits, but
including FCS octets) of between 64 and 1518
octets, inclusive, but had either a bad
Frame Check Sequence (FCS) with an integral
number of octets (FCS Error) or a bad FCS with
a non-integral number of octets (Alignment Error)";
reference
"RFC 2819: Remote Network Monitoring MIB -
etherStatsCRCAlignErrors";
}
leaf in-block-errors {
type oc-yang:counter64;
description
"The number of received errored blocks. Error detection codes
are capable of detecting whether one or more errors have
occurred in a given sequence of bits – the block. It is
normally not possible to determine the exact number of errored
bits within the block";
}
leaf in-carrier-errors {
type oc-yang:counter64;
description
"The number of received errored frames due to a carrier issue.
The value refers to MIB counter for
dot3StatsCarrierSenseErrors
oid=1.3.6.1.2.1.10.7.2.1.11";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-interrupted-tx {
type oc-yang:counter64;
description
"The number of received errored frames due to interrupted
transmission issue. The value refers to MIB counter for
dot3StatsDeferredTransmissions
oid=1.3.6.1.2.1.10.7.2.1.7";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-late-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to late collision
issue. The value refers to MIB counter for
dot3StatsLateCollisions
oid=1.3.6.1.2.1.10.7.2.1.8";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-mac-errors-rx {
type oc-yang:counter64;
description
"The number of received errored frames due to MAC errors
received. The value refers to MIB counter for
dot3StatsInternalMacReceiveErrors
oid=1.3.6.1.2.1.10.7.2.1.16";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-single-collision {
type oc-yang:counter64;
description
"The number of received errored frames due to single collision
issue. The value refers to MIB counter for
dot3StatsSingleCollisionFrames
oid=1.3.6.1.2.1.10.7.2.1.4";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-symbol-error {
type oc-yang:counter64;
description
"The number of received errored frames due to symbol error.
The value refers to MIB counter for
in-symbol-error
oid=1.3.6.1.2.1.10.7.2.1.18";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
leaf in-maxsize-exceeded {
type oc-yang:counter64;
description
"The total number frames received that are well-formed but
dropped due to exceeding the maximum frame size on the interface
(e.g., MTU or MRU)";
}
// egress counters
leaf out-mac-control-frames {
type oc-yang:counter64;
description
"MAC layer control frames sent on the interface";
}
leaf out-mac-pause-frames {
type oc-yang:counter64;
description
"MAC layer PAUSE frames sent on the interface";
}
leaf out-8021q-frames {
type oc-yang:counter64;
description
"Number of 802.1q tagged frames sent on the interface";
}
leaf out-mac-errors-tx {
type oc-yang:counter64;
description
"The number of sent errored frames due to MAC errors
transmitted. The value refers to MIB counter for
dot3StatsInternalMacTransmitErrors
oid=1.3.6.1.2.1.10.7.2.1.10";
reference
"RFC 1643 Definitions of Managed
Objects for the Ethernet-like Interface Types.";
}
}
grouping ethernet-interface-state {
description
"Grouping for defining Ethernet-specific operational state";
leaf hw-mac-address {
type oc-yang:mac-address;
description
"Represenets the 'burned-in', or system-assigned, MAC
address for the Ethernet interface.";
}
leaf negotiated-duplex-mode {
type enumeration {
enum FULL {
description "Full duplex mode";
}
enum HALF {
description "Half duplex mode";
}
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the duplex mode that has been negotiated.";
}
leaf negotiated-port-speed {
type identityref {
base ETHERNET_SPEED;
}
description
"When auto-negotiate is set to TRUE, and the interface has
completed auto-negotiation with the remote peer, this value
shows the interface speed that has been negotiated.";
}
container counters {
description "Ethernet interface counters";
uses ethernet-interface-state-counters;
}
}
// data definition statements
grouping ethernet-top {
description "top-level Ethernet config and state containers";
container ethernet {
description
"Top-level container for ethernet configuration
and state";
container config {
description "Configuration data for ethernet interfaces";
uses ethernet-interface-config;
}
container state {
config false;
description "State variables for Ethernet interfaces";
uses ethernet-interface-config;
uses ethernet-interface-state;
}
}
}
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds addtional Ethernet-specific configuration to
interfaces model";
uses ethernet-top {
when "oc-if:config/oc-if:type = 'ianaift:ethernetCsmacd'" {
description "Additional interface configuration parameters when
the interface type is Ethernet";
}
}
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-ethernet}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.11.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}]=SimpleContainerNode{version=Version[68496588], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-model, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-model {
yang-version "1";
namespace "test:model";
prefix "gtm";
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix inet; }
import openconfig-aaa-types { prefix types; }
oc-ext:openconfig-version "1.0.0";
container test-data {
leaf-list test-leaf-list {
type string;
}
list test-list {
key key;
leaf key {
type string;
}
}
container nested-container {
leaf nc-leaf {
type string;
}
}
list multiple-key-list {
key "number leafref-key identityref-key union-key";
leaf number {
type inet:as-number;
}
leaf leafref-key {
type leafref {
path "../number";
}
}
leaf identityref-key {
type identityref {
base "types:SYSTEM_DEFINED_ROLES";
}
}
leaf union-key {
type union {
type int32;
type enumeration {
enum "unbounded";
}
}
}
container inner-container {
leaf inner-data {
type string;
}
}
}
}
list base-list {
key list-key;
leaf list-key {
type string;
}
list nested-list {
key nested-list-key;
leaf nested-list-key {
type string;
}
}
}
augment /test-data {
container augmented-container {
leaf augmented-data {
type string;
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-model}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}]=SimpleContainerNode{version=Version[7c060525], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-extensions, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2020-06-16}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-extensions {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/openconfig-ext";
prefix "oc-ext";
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module provides extensions to the YANG language to allow
OpenConfig specific functionality and meta-data to be defined.";
revision "2020-06-16" {
description
"Add extension for POSIX pattern statements.";
reference "0.5.0";
}
revision "2018-10-17" {
description
"Add extension for regular expression type.";
reference "0.4.0";
}
revision "2017-04-11" {
description
"rename password type to 'hashed' and clarify description";
reference "0.3.0";
}
revision "2017-01-29" {
description
"Added extension for annotating encrypted values.";
reference "0.2.0";
}
revision "2015-10-09" {
description
"Initial OpenConfig public release";
reference "0.1.0";
}
// extension statements
extension openconfig-version {
argument "semver" {
yin-element false;
}
description
"The OpenConfig version number for the module. This is
expressed as a semantic version number of the form:
x.y.z
where:
* x corresponds to the major version,
* y corresponds to a minor version,
* z corresponds to a patch version.
This version corresponds to the model file within which it is
defined, and does not cover the whole set of OpenConfig models.
Individual YANG modules are versioned independently -- the
semantic version is generally incremented only when there is a
change in the corresponding file. Submodules should always
have the same semantic version as their parent modules.
A major version number of 0 indicates that this model is still
in development (whether within OpenConfig or with industry
partners), and is potentially subject to change.
Following a release of major version 1, all modules will
increment major revision number where backwards incompatible
changes to the model are made.
The minor version is changed when features are added to the
model that do not impact current clients use of the model.
The patch-level version is incremented when non-feature changes
(such as bugfixes or clarifications to human-readable
descriptions that do not impact model functionality) are made
that maintain backwards compatibility.
The version number is stored in the module meta-data.";
}
extension openconfig-hashed-value {
description
"This extension provides an annotation on schema nodes to
indicate that the corresponding value should be stored and
reported in hashed form.
Hash algorithms are by definition not reversible. Clients
reading the configuration or applied configuration for the node
should expect to receive only the hashed value. Values written
in cleartext will be hashed. This annotation may be used on
nodes such as secure passwords in which the device never reports
a cleartext value, even if the input is provided as cleartext.";
}
extension regexp-posix {
description
"This extension indicates that the regular expressions included
within the YANG module specified are conformant with the POSIX
regular expression format rather than the W3C standard that is
specified by RFC6020 and RFC7950.";
}
extension posix-pattern {
argument "pattern" {
yin-element false;
}
description
"Provides a POSIX ERE regular expression pattern statement as an
alternative to YANG regular expresssions based on XML Schema Datatypes.
It is used the same way as the standard YANG pattern statement defined in
RFC6020 and RFC7950, but takes an argument that is a POSIX ERE regular
expression string.";
reference
"POSIX Extended Regular Expressions (ERE) Specification:
https://pubs.opengroup.org/onlinepubs/9699919799/basedefs/V1_chap09.html#tag_09_04";
}
extension telemetry-on-change {
description
"The telemetry-on-change annotation is specified in the context
of a particular subtree (container, or list) or leaf within the
YANG schema. Where specified, it indicates that the value stored
by the nodes within the context change their value only in response
to an event occurring. The event may be local to the target, for
example - a configuration change, or external - such as the failure
of a link.
When a telemetry subscription allows the target to determine whether
to export the value of a leaf in a periodic or event-based fashion
(e.g., TARGET_DEFINED mode in gNMI), leaves marked as
telemetry-on-change should only be exported when they change,
i.e., event-based.";
}
extension telemetry-atomic {
description
"The telemetry-atomic annotation is specified in the context of
a subtree (containre, or list), and indicates that all nodes
within the subtree are always updated together within the data
model. For example, all elements under the subtree may be updated
as a result of a new alarm being raised, or the arrival of a new
protocol message.
Transport protocols may use the atomic specification to determine
optimisations for sending or storing the corresponding data.";
}
extension operational {
description
"The operational annotation is specified in the context of a
grouping, leaf, or leaf-list within a YANG module. It indicates
that the nodes within the context are derived state on the device.
OpenConfig data models divide nodes into the following three categories:
- intended configuration - these are leaves within a container named
'config', and are the writable configuration of a target.
- applied configuration - these are leaves within a container named
'state' and are the currently running value of the intended configuration.
- derived state - these are the values within the 'state' container which
are not part of the applied configuration of the device. Typically, they
represent state values reflecting underlying operational counters, or
protocol statuses.";
}
extension catalog-organization {
argument "org" {
yin-element false;
}
description
"This extension specifies the organization name that should be used within
the module catalogue on the device for the specified YANG module. It stores
a pithy string where the YANG organization statement may contain more
details.";
}
extension origin {
argument "origin" {
yin-element false;
}
description
"This extension specifies the name of the origin that the YANG module
falls within. This allows multiple overlapping schema trees to be used
on a single network element without requiring module based prefixing
of paths.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-extensions}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2020-06-16}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[32b94cf3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-terminal, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-terminal {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/terminal";
prefix "oc-sys-term";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to remote terminal services such as ssh and telnet.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// typedef statements
// grouping statements
grouping system-terminal-common-config {
description
"Common configuration data for terminal services";
leaf timeout {
type uint16;
units seconds;
description
"Set the idle timeout in seconds on terminal connections to
the system for the protocol.";
}
leaf rate-limit {
type uint16;
units "conn/min";
description
"Set a limit on the number of connection attempts per
minute to the system for the protocol.";
}
leaf session-limit {
type uint16;
description
"Set a limit on the number of simultaneous active terminal
sessions to the system for the protocol (e.g., ssh,
telnet, ...) ";
}
}
grouping system-terminal-common-state {
description
"Common operational state data for terminal services";
}
grouping system-terminal-common-top {
description
"Top-level grouping for common terminal service data";
container terminal-servers {
description
"Top-level container for terminal services";
container config {
description
"Configuration data for terminal services";
uses system-terminal-common-config;
}
container state {
config false;
description
"Operational state data ";
uses system-terminal-common-config;
uses system-terminal-common-state;
}
}
}
grouping system-ssh-server-config {
description
"Configuration data for system ssh configuration";
leaf enable {
type boolean;
default true;
description
"Enables the ssh server. The ssh server is enabled by
default.";
}
leaf protocol-version {
type enumeration {
enum V2 {
description
"Use SSH v2 only";
}
enum V1 {
description
"Use SSH v1 only";
}
enum V1_V2 {
description
"Use either SSH v1 or v2";
}
}
default V2;
description
"Set the protocol version for SSH connections to the system";
}
uses system-terminal-common-config;
}
grouping system-ssh-server-state {
description
"Operational state data for ssh server";
}
grouping system-ssh-server-top {
description
"Top-level grouping for ssh server data";
container ssh-server {
description
"Top-level container for ssh server";
container config {
description
"Configuration data for the system ssh server";
uses system-ssh-server-config;
}
container state {
config false;
description
"Operational state data for the system ssh server";
uses system-ssh-server-config;
uses system-ssh-server-state;
}
}
}
grouping system-telnet-server-config {
description
"Configuration data for telnet server";
leaf enable {
type boolean;
default false;
description
"Enables the telnet server. Telnet is disabled by
default";
}
uses system-terminal-common-config;
}
grouping system-telnet-server-state {
description
"Operational state data for telnet server";
}
grouping system-telnet-server-top {
description
"Top-level grouping for telnet server ";
container telnet-server {
description
"Top-level container for telnet terminal servers";
container config {
description
"Configuration data for telnet";
uses system-telnet-server-config;
}
container state {
config false;
description
"Operational state data for telnet";
uses system-telnet-server-config;
uses system-telnet-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-terminal}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[2eda9249], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-radius, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-radius {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the RADIUS protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity RADIUS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Remote Authentication Dial In User Service (RADIUS) AAA
server";
reference
"RFC 2865 - Remote Authentication Dial In User Service
(RADIUS)";
}
// typedef statements
// grouping statements
grouping aaa-radius-server-config {
description
"Configuration data for a RADIUS server";
leaf auth-port {
type oc-inet:port-number;
default 1812;
description
"Port number for authentication requests";
}
leaf acct-port {
type oc-inet:port-number;
default 1813;
description
"Port number for accounting requests";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the RADIUS server";
}
leaf retransmit-attempts {
type uint8;
description
"Number of times the system may resend a request to the
RADIUS server when it is unresponsive";
}
}
grouping aaa-radius-server-state {
description
"Operational state data for a RADIUS server";
container counters {
description
"A collection of RADIUS related state objects.";
leaf retried-access-requests {
type oc-yang:counter64;
description
"Retransmitted Access-Request messages.";
}
leaf access-accepts {
type oc-yang:counter64;
description
"Received Access-Accept messages.";
}
leaf access-rejects {
type oc-yang:counter64;
description
"Received Access-Reject messages.";
}
leaf timeout-access-requests {
type oc-yang:counter64;
description
"Access-Request messages that have timed-out,
requiring retransmission.";
}
}
}
grouping aaa-radius-server-top {
description
"Top-level grouping for RADIUS server data";
container radius {
description
"Top-level container for RADIUS server data";
container config {
description
"Configuration data for RADIUS servers";
uses aaa-radius-server-config;
}
container state {
config false;
description
"Operational state data for RADIUS servers";
uses aaa-radius-server-config;
uses aaa-radius-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-radius}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}]=SimpleContainerNode{version=Version[78f0020a], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.6.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-types";
prefix "oc-types";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of general type definitions that
are used across OpenConfig models. It can be imported by modules
that make use of these types.";
oc-ext:openconfig-version "0.6.0";
revision "2019-04-16" {
description
"Clarify definition of timeticks64.";
reference "0.6.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.5.1";
}
revision "2018-05-05" {
description
"Add grouping of min-max-time and
included them to all stats with min/max/avg";
reference "0.5.0";
}
revision "2018-01-16" {
description
"Add interval to min/max/avg stats; add percentage stat";
reference "0.4.0";
}
revision "2017-08-16" {
description
"Apply fix for ieetfloat32 length parameter";
reference "0.3.3";
}
revision "2017-01-13" {
description
"Add ADDRESS_FAMILY identity";
reference "0.3.2";
}
revision "2016-11-14" {
description
"Correct length of ieeefloat32";
reference "0.3.1";
}
revision "2016-11-11" {
description
"Additional types - ieeefloat32 and routing-password";
reference "0.3.0";
}
revision "2016-05-31" {
description
"OpenConfig public release";
reference "0.2.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef percentage {
type uint8 {
range "0..100";
}
description
"Integer indicating a percentage value";
}
typedef std-regexp {
type string;
description
"This type definition is a placeholder for a standard
definition of a regular expression that can be utilised in
OpenConfig models. Further discussion is required to
consider the type of regular expressions that are to be
supported. An initial proposal is POSIX compatible.";
}
typedef timeticks64 {
type uint64;
units "nanoseconds";
description
"The timeticks64 represents the time, modulo 2^64 in
nanoseconds between two epochs. The leaf using this
type must define the epochs that tests are relative to.";
}
typedef ieeefloat32 {
type binary {
length "4";
}
description
"An IEEE 32-bit floating point number. The format of this number
is of the form:
1-bit sign
8-bit exponent
23-bit fraction
The floating point value is calculated using:
(-1)**S * 2**(Exponent-127) * (1+Fraction)";
}
typedef routing-password {
type string;
description
"This type is indicative of a password that is used within
a routing protocol which can be returned in plain text to the
NMS by the local system. Such passwords are typically stored
as encrypted strings. Since the encryption used is generally
well known, it is possible to extract the original value from
the string - and hence this format is not considered secure.
Leaves specified with this type should not be modified by
the system, and should be returned to the end-user in plain
text. This type exists to differentiate passwords, which
may be sensitive, from other string leaves. It could, for
example, be used by the NMS to censor this data when
viewed by particular users.";
}
typedef stat-interval {
type uint64;
units nanoseconds;
description
"A time interval over which a set of statistics is computed.
A common usage is to report the interval over which
avg/min/max stats are computed and reported.";
}
grouping stat-interval-state {
description
"Reusable leaf definition for stats computation interval";
leaf interval {
type oc-types:stat-interval;
description
"If supported by the system, this reports the time interval
over which the min/max/average statistics are computed by
the system.";
}
}
grouping min-max-time {
description
"Common grouping for recording the absolute time at which
the minimum and maximum values occurred in the statistics";
leaf min-time {
type oc-types:timeticks64;
description
"The absolute time at which the minimum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
leaf max-time {
type oc-types:timeticks64;
description
"The absolute time at which the maximum value occurred.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping avg-min-max-stats-precision1 {
description
"Common nodes for recording average, minimum, and
maximum values for a statistic. These values all have
fraction-digits set to 1. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed is also reported.";
leaf avg {
type decimal64 {
fraction-digits 1;
}
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 1;
}
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 1;
}
description
"The maximum value of the statitic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision1 {
description
"Common grouping for recording an instantaneous statistic value
in addition to avg-min-max stats";
leaf instant {
type decimal64 {
fraction-digits 1;
}
description
"The instantaneous value of the statistic.";
}
uses avg-min-max-stats-precision1;
}
grouping avg-min-max-instant-stats-precision2-dB {
description
"Common grouping for recording dB values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The minimum value of the statistic over the time interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dB;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-dBm {
description
"Common grouping for recording dBm values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units dBm;
description
"The maximum value of the statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-precision2-mA {
description
"Common grouping for recording mA values with 2 decimal
precision. Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The instantaneous value of the statistic.";
}
leaf avg {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The arithmetic mean value of the statistic over the
time interval.";
}
leaf min {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The minimum value of the statistic over the time
interval.";
}
leaf max {
type decimal64 {
fraction-digits 2;
}
units mA;
description
"The maximum value of the statistic over the time
interval.";
}
uses stat-interval-state;
uses min-max-time;
}
grouping avg-min-max-instant-stats-pct {
description
"Common grouping for percentage statistics.
Values include the instantaneous, average,
minimum, and maximum statistics. Statistics are computed
and reported based on a moving time interval (e.g., the last
30s). If supported by the device, the time interval over which
the statistics are computed, and the times at which the minimum
and maximum values occurred, are also reported.";
leaf instant {
type oc-types:percentage;
description
"The instantaneous percentage value.";
}
leaf avg {
type oc-types:percentage;
description
"The arithmetic mean value of the percentage measure of the
statistic over the time interval.";
}
leaf min {
type oc-types:percentage;
description
"The minimum value of the percentage measure of the
statistic over the time interval.";
}
leaf max {
type oc-types:percentage;
description
"The maximum value of the percentage measure of the
statistic over the time interval.";
}
uses stat-interval-state;
uses min-max-time;
}
identity ADDRESS_FAMILY {
description
"A base identity for all address families";
}
identity IPV4 {
base ADDRESS_FAMILY;
description
"The IPv4 address family";
}
identity IPV6 {
base ADDRESS_FAMILY;
description
"The IPv6 address family";
}
identity MPLS {
base ADDRESS_FAMILY;
description
"The MPLS address family";
}
identity L2_ETHERNET {
base ADDRESS_FAMILY;
description
"The 802.3 Ethernet address family";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.6.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[53b4232c], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa";
prefix "oc-aaa";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-aaa-types { prefix oc-aaa-types; }
include openconfig-aaa-tacacs;
include openconfig-aaa-radius;
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to authorization, authentication, and accounting (AAA)
management.
Portions of this model reuse data definitions or structure from
RFC 7317 - A YANG Data Model for System Management";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed for TACACS and RADIUS.";
reference "0.5.0";
}
revision "2019-10-28" {
description
"Fix bug in when statement path";
reference "0.4.3";
}
revision "2019-08-20" {
description
"Fix identity prefixes and when statement paths";
reference "0.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
// grouping statements
grouping aaa-servergroup-common-config {
description
"Configuration data for AAA server groups";
leaf name {
type string;
description
"Name for the server group";
}
leaf type {
type identityref {
base oc-aaa-types:AAA_SERVER_TYPE;
}
description
"AAA server type -- all servers in the group must be of this
type";
}
}
grouping aaa-servergroup-common-state {
description
"Operational state data for AAA server groups";
//TODO: add list of group members as opstate
}
grouping aaa-servergroup-common-top {
description
"Top-level grouping for AAA server groups";
container server-groups {
description
"Enclosing container for AAA server groups";
list server-group {
key "name";
description
"List of AAA server groups. All servers in a group
must have the same type as indicated by the server
type.";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to configured name of the server group";
}
container config {
description
"Configuration data for each server group";
uses aaa-servergroup-common-config;
}
container state {
config false;
description
"Operational state data for each server group";
uses aaa-servergroup-common-config;
uses aaa-servergroup-common-state;
}
uses aaa-server-top;
}
}
}
grouping aaa-server-config {
description
"Common configuration data for AAA servers";
leaf name {
type string;
description
"Name assigned to the server";
}
leaf address {
type oc-inet:ip-address;
description "Address of the authentication server";
}
leaf timeout {
type uint16;
units seconds;
description
"Set the timeout in seconds on responses from the AAA
server";
}
}
grouping aaa-server-state {
description
"Common operational state data for AAA servers";
leaf connection-opens {
type oc-yang:counter64;
description
"Number of new connection requests sent to the server, e.g.
socket open";
}
leaf connection-closes {
type oc-yang:counter64;
description
"Number of connection close requests sent to the server, e.g.
socket close";
}
leaf connection-aborts {
type oc-yang:counter64;
description
"Number of aborted connections to the server. These do
not include connections that are close gracefully.";
}
leaf connection-failures {
type oc-yang:counter64;
description
"Number of connection failures to the server";
}
leaf connection-timeouts {
type oc-yang:counter64;
description
"Number of connection timeouts to the server";
}
leaf messages-sent {
type oc-yang:counter64;
description
"Number of messages sent to the server";
}
leaf messages-received {
type oc-yang:counter64;
description
"Number of messages received by the server";
}
leaf errors-received {
type oc-yang:counter64;
description
"Number of error messages received from the server";
}
}
grouping aaa-server-top {
description
"Top-level grouping for list of AAA servers";
container servers {
description
"Enclosing container the list of servers";
list server {
key "address";
description
"List of AAA servers";
leaf address {
type leafref {
path "../config/address";
}
description
"Reference to the configured address of the AAA server";
}
container config {
description
"Configuration data ";
uses aaa-server-config;
}
container state {
config false;
description
"Operational state data ";
uses aaa-server-config;
uses aaa-server-state;
}
uses aaa-tacacs-server-top {
when "../../config/type = 'oc-aaa:TACACS'";
}
uses aaa-radius-server-top {
when "../../config/type = 'oc-aaa:RADIUS'";
}
}
}
}
grouping aaa-admin-config {
description
"Configuration data for the system built-in
administrator / root user account";
leaf admin-password {
type string;
oc-ext:openconfig-hashed-value;
description
"The admin/root password, supplied as a cleartext string.
The system should hash and only store the password as a
hashed value.";
}
leaf admin-password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The admin/root password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
}
grouping aaa-admin-state {
description
"Operational state data for the root user";
leaf admin-username {
type string;
description
"Name of the administrator user account, e.g., admin, root,
etc.";
}
}
grouping aaa-authentication-admin-top {
description
"Top-level grouping for root user configuration and state
data";
container admin-user {
description
"Top-level container for the system root or admin user
configuration and operational state";
container config {
description
"Configuration data for the root user account";
uses aaa-admin-config;
}
container state {
config false;
description
"Operational state data for the root user account";
uses aaa-admin-config;
uses aaa-admin-state;
}
}
}
grouping aaa-authentication-user-config {
description
"Configuration data for local users";
leaf username {
type string;
description
"Assigned username for this user";
}
leaf password {
type string;
oc-ext:openconfig-hashed-value;
description
"The user password, supplied as cleartext. The system
must hash the value and only store the hashed value.";
}
leaf password-hashed {
type oc-aaa-types:crypt-password-type;
description
"The user password, supplied as a hashed value
using the notation described in the definition of the
crypt-password-type.";
}
leaf ssh-key {
type string;
description
"SSH public key for the user (RSA or DSA)";
}
leaf role {
type union {
type string;
type identityref {
base oc-aaa-types:SYSTEM_DEFINED_ROLES;
}
}
description
"Role assigned to the user. The role may be supplied
as a string or a role defined by the SYSTEM_DEFINED_ROLES
identity.";
}
}
grouping aaa-authentication-user-state {
description
"Operational state data for local users";
}
grouping aaa-authentication-user-top {
description
"Top-level grouping for local users";
container users {
description
"Enclosing container list of local users";
list user {
key "username";
description
"List of local users on the system";
leaf username {
type leafref {
path "../config/username";
}
description
"References the configured username for the user";
}
container config {
description
"Configuration data for local users";
uses aaa-authentication-user-config;
}
container state {
config false;
description
"Operational state data for local users";
uses aaa-authentication-user-config;
uses aaa-authentication-user-state;
}
}
}
}
grouping aaa-accounting-methods-common {
description
"Common definitions for accounting methods";
leaf-list accounting-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: in YANG 1.1 this should be converted to a leafref to
//point to the server group name.
}
ordered-by user;
description
"An ordered list of methods used for AAA accounting for this
event type. The method is defined by the destination for
accounting data, which may be specified as the group of
all TACACS+/RADIUS servers, a defined server group, or
the local system.";
}
}
grouping aaa-accounting-events-config {
description
"Configuration data for AAA accounting events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_ACCOUNTING_EVENT_TYPE;
}
description
"The type of activity to record at the AAA accounting
server";
}
leaf record {
type enumeration {
enum START_STOP {
description
"Send START record to the accounting server at the
beginning of the activity, and STOP record at the
end of the activity.";
}
enum STOP {
description
"Send STOP record to the accounting server when the
user activity completes";
}
}
description
"Type of record to send to the accounting server for this
activity type";
}
}
grouping aaa-accounting-events-state {
description
"Operational state data for accounting events";
}
grouping aaa-accounting-events-top {
description
"Top-level grouping for accounting events";
container events {
description
"Enclosing container for defining handling of events
for accounting";
list event {
key "event-type";
description
"List of events subject to accounting";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type being logged at the
accounting server";
}
container config {
description
"Configuration data for accounting events";
uses aaa-accounting-events-config;
}
container state {
config false;
description
"Operational state data for accounting events";
uses aaa-accounting-events-config;
uses aaa-accounting-events-state;
}
}
}
}
grouping aaa-accounting-config {
description
"Configuration data for event accounting";
uses aaa-accounting-methods-common;
}
grouping aaa-accounting-state {
description
"Operational state data for event accounting services";
}
grouping aaa-accounting-top {
description
"Top-level grouping for user activity accounting";
container accounting {
description
"Top-level container for AAA accounting";
container config {
description
"Configuration data for user activity accounting.";
uses aaa-accounting-config;
}
container state {
config false;
description
"Operational state data for user accounting.";
uses aaa-accounting-config;
uses aaa-accounting-state;
}
uses aaa-accounting-events-top;
}
}
grouping aaa-authorization-methods-config {
description
"Common definitions for authorization methods for global
and per-event type";
leaf-list authorization-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
}
ordered-by user;
description
"Ordered list of methods for authorizing commands. The first
method that provides a response (positive or negative) should
be used. The list may contain a well-defined method such
as the set of all TACACS or RADIUS servers, or the name of
a defined AAA server group. The system must validate
that the named server group exists.";
}
}
grouping aaa-authorization-events-config {
description
"Configuration data for AAA authorization events";
leaf event-type {
type identityref {
base oc-aaa-types:AAA_AUTHORIZATION_EVENT_TYPE;
}
description
"The type of event to record at the AAA authorization
server";
}
}
grouping aaa-authorization-events-state {
description
"Operational state data for AAA authorization events";
}
grouping aaa-authorization-events-top {
description
"Top-level grouping for authorization events";
container events {
description
"Enclosing container for the set of events subject
to authorization";
list event {
key "event-type";
description
"List of events subject to AAA authorization";
leaf event-type {
type leafref {
path "../config/event-type";
}
description
"Reference to the event-type list key";
}
container config {
description
"Configuration data for each authorized event";
uses aaa-authorization-events-config;
}
container state {
config false;
description
"Operational state data for each authorized activity";
uses aaa-authorization-events-config;
uses aaa-authorization-events-state;
}
}
}
}
grouping aaa-authorization-config {
description
"Configuration data for AAA authorization";
uses aaa-authorization-methods-config;
}
grouping aaa-authorization-state {
description
"Operational state data for AAA authorization";
}
grouping aaa-authorization-top {
description
"Top-level grouping for AAA authorization";
container authorization {
description
"Top-level container for AAA authorization configuration
and operational state data";
container config {
description
"Configuration data for authorization based on AAA
methods";
uses aaa-authorization-config;
}
container state {
config false;
description
"Operational state data for authorization based on AAA";
uses aaa-authorization-config;
uses aaa-authorization-state;
}
uses aaa-authorization-events-top;
}
}
grouping aaa-authentication-config {
description
"Configuration data for global authentication";
leaf-list authentication-method {
type union {
type identityref {
base oc-aaa-types:AAA_METHOD_TYPE;
}
type string;
//TODO: string should be a leafref to a defined
//server group. this will be possible in YANG 1.1
//type leafref {
//path "/aaa/server-groups/server-group/config/name";
//}
}
ordered-by user;
description
"Ordered list of authentication methods for users. This
can be either a reference to a server group, or a well-
defined designation in the AAA_METHOD_TYPE identity. If
authentication fails with one method, the next defined
method is tried -- failure of all methods results in the
user being denied access.";
}
}
grouping aaa-authentication-state {
description
"Operational state data for global authentication";
}
grouping aaa-authentication-top {
description
"Top-level grouping for top-level authentication";
container authentication {
description
"Top-level container for global authentication data";
container config {
description
"Configuration data for global authentication services";
uses aaa-authentication-config;
}
container state {
config false;
description
"Operational state data for global authentication
services";
uses aaa-authentication-config;
uses aaa-authentication-state;
}
uses aaa-authentication-admin-top;
uses aaa-authentication-user-top;
}
}
grouping aaa-config {
description
"Configuration data for top level AAA";
}
grouping aaa-state {
description
"Operational state data for top level AAA";
}
grouping aaa-top {
description
"Top-level grouping for AAA services";
container aaa {
description
"Top-level container for AAA services";
container config {
description
"Configuration data for top level AAA services";
uses aaa-config;
}
container state {
config false;
description
"Operational state data for top level AAA services ";
uses aaa-config;
uses aaa-state;
}
uses aaa-authentication-top;
uses aaa-authorization-top;
uses aaa-accounting-top;
uses aaa-servergroup-common-top;
}
}
// data definition statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}]=SimpleContainerNode{version=Version[3472802d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-license, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-license {
yang-version "1";
namespace "http://openconfig.net/yang/license";
prefix "oc-license";
import openconfig-extensions { prefix oc-ext; }
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational
state data for licenses.";
oc-ext:openconfig-version "0.2.0";
revision "2020-04-22" {
description
"Make license-data a union of a string or binary.";
reference "0.2.0";
}
revision "2020-01-07" {
description
"Initial revision";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
grouping license-config {
description
"Configuration data for license";
leaf license-id {
type string;
description
"License ID. A string that uniquelly identifies the license. The
platform should list all the licenses it supports being activated.";
}
leaf license-data {
type union {
type binary;
type string;
}
description
"The contents of the licence (if required) - which may be
supplied as a binary blob, or a simple string value. If this
value is considered sensitive, it may be read as an empty value.";
}
leaf active {
type boolean;
default false;
description
"The activation state of the license.";
}
}
grouping license-state {
description
"State data for license";
leaf description {
type string;
description
"The license description.";
}
leaf issue-date {
type uint64;
description
"The date and time at which the license was issued, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC).";
}
leaf expiration-date {
type uint64;
description
"The date and time at which the license will expire, expressed as the
number of nanoseconds since the Unix Epoch
(January 1, 1970, 00:00 UTC). Zero if it does not expire.";
}
leaf in-use {
type boolean;
description
"The license is in use. Different from active. This states that the
license is effectively being used in addition to being active. If
license for feature X was activated but feature X is not being used,
then this should be false.";
}
leaf expired {
type boolean;
description
"The license has expired.";
}
leaf valid {
type boolean;
description
"The license is valid. Can be activated in the system or platform.";
}
}
grouping licenses-top {
description
"Top-level grouping for licenses.";
container licenses {
description
"Enclosing container for list of licenses";
list license {
key "license-id";
description
"List of licenses.";
leaf license-id {
type leafref {
path "../config/license-id";
}
description
"Reference to license id list key";
}
container config {
description
"Configuration data for license";
uses license-config;
}
container state {
config false;
description
"Operational state data for license.";
uses license-config;
uses license-state;
}
}
}
}
grouping license-top {
description
"Top-level for the license model";
container license {
description
"Container for license model";
uses licenses-top;
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-license}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}]=SimpleContainerNode{version=Version[67cccdb1], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-interfaces, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-interfaces {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces";
prefix "oc-if";
// import some basic types
import ietf-interfaces { prefix ietf-if; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing network interfaces and subinterfaces. This
module also defines convenience types / groupings for other
models to create references to interfaces:
base-interface-ref (type) - reference to a base interface
interface-ref (grouping) - container for reference to a
interface + subinterface
interface-ref-state (grouping) - container for read-only
(opstate) reference to interface + subinterface
This model reuses data items defined in the IETF YANG model for
interfaces described by RFC 7223 with an alternate structure
(particularly for operational state data) and with
additional configuration items.
Portions of this code were derived from IETF RFC 7223.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "2.5.0";
revision "2021-04-06" {
description
"Add leaves for management and cpu interfaces";
reference "2.5.0";
}
revision "2019-11-19" {
description
"Update description of interface name.";
reference "2.4.3";
}
revision "2019-07-10" {
description
"Remove redundant nanosecond units statements to reflect
universal definition of timeticks64 type.";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.4.1";
}
revision "2018-08-07" {
description
"Add leaf to indicate whether an interface is physical or
logical.";
reference "2.4.0";
}
revision "2018-07-02" {
description
"Add in-pkts and out-pkts in counters";
reference "2.3.2";
}
revision "2018-04-24" {
description
"Clarified behavior of last-change state leaf";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2017-04-03" {
description
"Update copyright notice.";
reference "1.1.1";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// typedef statements
typedef base-interface-ref {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reusable type for by-name reference to a base interface.
This type may be used in cases where ability to reference
a subinterface is not required.";
}
typedef interface-id {
type string;
description
"User-defined identifier for an interface, generally used to
name a interface reference. The id can be arbitrary but a
useful convention is to use a combination of base interface
name and subinterface index.";
}
// grouping statements
grouping interface-ref-common {
description
"Reference leafrefs to interface / subinterface";
leaf interface {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Reference to a base interface. If a reference to a
subinterface is required, this leaf must be specified
to indicate the base interface.";
}
leaf subinterface {
type leafref {
path "/oc-if:interfaces/" +
"oc-if:interface[oc-if:name=current()/../interface]/" +
"oc-if:subinterfaces/oc-if:subinterface/oc-if:index";
}
description
"Reference to a subinterface -- this requires the base
interface to be specified using the interface leaf in
this container. If only a reference to a base interface
is requuired, this leaf should not be set.";
}
}
grouping interface-ref-state-container {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container state {
config false;
description
"Operational state for interface-ref";
uses interface-ref-common;
}
}
grouping interface-ref {
description
"Reusable definition for a reference to an interface or
subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
container config {
description
"Configured reference to interface / subinterface";
oc-ext:telemetry-on-change;
uses interface-ref-common;
}
uses interface-ref-state-container;
}
}
grouping interface-ref-state {
description
"Reusable opstate w/container for a reference to an
interface or subinterface";
container interface-ref {
description
"Reference to an interface or subinterface";
uses interface-ref-state-container;
}
}
grouping base-interface-ref-state {
description
"Reusable opstate w/container for a reference to a
base interface (no subinterface).";
container state {
config false;
description
"Operational state for base interface reference";
leaf interface {
type base-interface-ref;
description
"Reference to a base interface.";
}
}
}
grouping interface-common-config {
description
"Configuration data data nodes common to physical interfaces
and subinterfaces";
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
datastore.
Specifically, if the device supports ':startup', when
ifAlias is read the device MUST return the value of
'description' in the 'startup' datastore, and when it is
written, it MUST be written to the 'running' and 'startup'
datastores. Note that it is up to the implementation to
decide whether to modify this single leaf in 'startup' or
perform an implicit copy-config from 'running' to
'startup'.
If the device does not support ':startup', ifAlias MUST
be mapped to the 'description' leaf in the 'running'
datastore.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the 'running' datastore to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the 'running' datastore are
reflected in ifAdminStatus, but if ifAdminStatus is
changed over SNMP, this leaf is not affected.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
}
grouping interface-phys-config {
description
"Configuration data for physical interfaces";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface. The 'config false'
list interfaces/interface[name]/state contains the currently
existing interfaces on the device.
If a client tries to create configuration for a
system-controlled interface that is not present in the
corresponding state list, the server MAY reject
the request if the implementation does not support
pre-provisioning of interfaces or if the name refers to
an interface that can never exist in the system. A
NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.
The IETF model in RFC 7223 provides YANG features for the
following (i.e., pre-provisioning and arbitrary-names),
however they are omitted here:
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
/interfaces/interface[name]/state list.";
}
leaf type {
type identityref {
base ietf-if:interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf mtu {
type uint16;
description
"Set the max transmission unit size in octets
for the physical interface. If this is not set, the mtu is
set to the operational default -- e.g., 1514 bytes on an
Ethernet interface.";
}
leaf loopback-mode {
type boolean;
default false;
description
"When set to true, the interface is logically looped back,
such that packets that are forwarded via the interface
are received on the same interface.";
}
uses interface-common-config;
}
grouping interface-phys-holdtime-config {
description
"Configuration data for interface hold-time settings --
applies to physical interfaces.";
leaf up {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface
transitions from down to up. A zero value means dampening
is turned off, i.e., immediate notification.";
}
leaf down {
type uint32;
units milliseconds;
default 0;
description
"Dampens advertisement when the interface transitions from
up to down. A zero value means dampening is turned off,
i.e., immediate notification.";
}
}
grouping interface-phys-holdtime-state {
description
"Operational state data for interface hold-time.";
}
grouping interface-phys-holdtime-top {
description
"Top-level grouping for setting link transition
dampening on physical and other types of interfaces.";
container hold-time {
description
"Top-level container for hold-time settings to enable
dampening advertisements of interface transitions.";
container config {
description
"Configuration data for interface hold-time settings.";
oc-ext:telemetry-on-change;
uses interface-phys-holdtime-config;
}
container state {
config false;
description
"Operational state data for interface hold-time.";
uses interface-phys-holdtime-config;
uses interface-phys-holdtime-state;
}
}
}
grouping interface-common-state {
description
"Operational state data (in addition to intended configuration)
at the global level for this interface";
oc-ext:operational;
leaf ifindex {
type uint32;
description
"System assigned number for each interface. Corresponds to
ifIndex object in SNMP Interface MIB";
reference
"RFC 2863 - The Interfaces Group MIB";
oc-ext:telemetry-on-change;
}
leaf admin-status {
type enumeration {
enum UP {
description
"Ready to pass packets.";
}
enum DOWN {
description
"Not ready to pass packets and not in some test mode.";
}
enum TESTING {
//TODO: This is generally not supported as a configured
//admin state, though it's in the standard interfaces MIB.
//Consider removing it.
description
"In some test mode.";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The desired state of the interface. In RFC 7223 this leaf
has the same read semantics as ifAdminStatus. Here, it
reflects the administrative state as set by enabling or
disabling the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
oc-ext:telemetry-on-change;
}
leaf oper-status {
type enumeration {
enum UP {
value 1;
description
"Ready to pass packets.";
}
enum DOWN {
value 2;
description
"The interface does not pass any packets.";
}
enum TESTING {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum UNKNOWN {
value 4;
description
"Status cannot be determined for some reason.";
}
enum DORMANT {
value 5;
description
"Waiting for some external event.";
}
enum NOT_PRESENT {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum LOWER_LAYER_DOWN {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
//TODO:consider converting to an identity to have the
//flexibility to remove some values defined by RFC 7223 that
//are not used or not implemented consistently.
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
oc-ext:telemetry-on-change;
}
leaf last-change {
type oc-types:timeticks64;
description
"This timestamp indicates the absolute time of the last
state change of the interface (e.g., up-to-down transition).
This is different than the SNMP ifLastChange object in the
standard interface MIB in that it is not relative to the
system boot time (i.e,. sysUpTime).
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
leaf logical {
type boolean;
description
"When set to true, the interface is a logical interface
which does not have an associated physical port or
channel on the system.";
oc-ext:telemetry-on-change;
}
leaf management {
type boolean;
description
"When set to true, the interface is a dedicated
management interface that is not connected to dataplane
interfaces. It may be used to connect the system to an
out-of-band management network, for example.";
oc-ext:telemetry-on-change;
}
leaf cpu {
type boolean;
description
"When set to true, the interface is for traffic
that is handled by the system CPU, sometimes also called the
control plane interface. On systems that represent the CPU
interface as an Ethernet interface, for example, this leaf
should be used to distinguish the CPU interface from dataplane
interfaces.";
oc-ext:telemetry-on-change;
}
}
grouping interface-counters-state {
description
"Operational state representing interface counters
and statistics.";
//TODO: we may need to break this list of counters into those
//that would appear for physical vs. subinterface or logical
//interfaces. For now, just replicating the full stats
//grouping to both interface and subinterface.
oc-ext:operational;
container counters {
description
"A collection of interface-related statistics objects.";
leaf in-octets {
type oc-yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-pkts {
type oc-yang:counter64;
description
"The total number of packets received on the interface,
including all unicast, multicast, broadcast and bad packets
etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf in-unicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type oc-yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type oc-yang:counter64;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf in-fcs-errors {
type oc-yang:counter64;
description
"Number of received packets which had errors in the
frame check sequence (FCS), i.e., framing errors.
Discontinuities in the value of this counter can occur
when the device is re-initialization as indicated by the
value of 'last-clear'.";
}
leaf out-octets {
type oc-yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-pkts {
type oc-yang:counter64;
description
"The total number of packets transmitted out of the
interface, including all unicast, multicast, broadcast,
and bad packets etc.";
reference
"RFC 2819: Remote Network Monitoring Management Information
Base";
}
leaf out-unicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type oc-yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted, and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type oc-yang:counter64;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type oc-yang:counter64;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system, and at
other times as indicated by the value of
'last-clear'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
leaf carrier-transitions {
type oc-yang:counter64;
description
"Number of times the interface state has transitioned
between up and down since the time the device restarted
or the last-clear time, whichever is most recent.";
oc-ext:telemetry-on-change;
}
leaf last-clear {
type oc-types:timeticks64;
description
"Timestamp of the last time the interface counters were
cleared.
The value is the timestamp in nanoseconds relative to
the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
oc-ext:telemetry-on-change;
}
}
}
// data definition statements
grouping sub-unnumbered-config {
description
"Configuration data for unnumbered subinterfaces";
leaf enabled {
type boolean;
default false;
description
"Indicates that the subinterface is unnumbered. By default
the subinterface is numbered, i.e., expected to have an
IP address configuration.";
}
}
grouping sub-unnumbered-state {
description
"Operational state data unnumbered subinterfaces";
}
grouping sub-unnumbered-top {
description
"Top-level grouping unnumbered subinterfaces";
container unnumbered {
description
"Top-level container for setting unnumbered interfaces.
Includes reference the interface that provides the
address information";
container config {
description
"Configuration data for unnumbered interface";
oc-ext:telemetry-on-change;
uses sub-unnumbered-config;
}
container state {
config false;
description
"Operational state data for unnumbered interfaces";
uses sub-unnumbered-config;
uses sub-unnumbered-state;
}
uses oc-if:interface-ref;
}
}
grouping subinterfaces-config {
description
"Configuration data for subinterfaces";
leaf index {
type uint32;
default 0;
description
"The index of the subinterface, or logical interface number.
On systems with no support for subinterfaces, or not using
subinterfaces, this value should default to 0, i.e., the
default subinterface.";
}
uses interface-common-config;
}
grouping subinterfaces-state {
description
"Operational state data for subinterfaces";
oc-ext:operational;
leaf name {
type string;
description
"The system-assigned name for the sub-interface. This MAY
be a combination of the base interface name and the
subinterface index, or some other convention used by the
system.";
oc-ext:telemetry-on-change;
}
uses interface-common-state;
uses interface-counters-state;
}
grouping subinterfaces-top {
description
"Subinterface data for logical interfaces associated with a
given interface";
container subinterfaces {
description
"Enclosing container for the list of subinterfaces associated
with a physical interface";
list subinterface {
key "index";
description
"The list of subinterfaces (logical interfaces) associated
with a physical interface";
leaf index {
type leafref {
path "../config/index";
}
description
"The index number of the subinterface -- used to address
the logical interface";
}
container config {
description
"Configurable items at the subinterface level";
oc-ext:telemetry-on-change;
uses subinterfaces-config;
}
container state {
config false;
description
"Operational state data for logical interfaces";
uses subinterfaces-config;
uses subinterfaces-state;
}
}
}
}
grouping interfaces-top {
description
"Top-level grouping for interface configuration and
operational state data";
container interfaces {
description
"Top level container for interfaces, including configuration
and state data.";
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the name of the interface";
//TODO: need to consider whether this should actually
//reference the name in the state subtree, which
//presumably would be the system-assigned name, or the
//configured name. Points to the config/name now
//because of YANG 1.0 limitation that the list
//key must have the same "config" as the list, and
//also can't point to a non-config node.
}
container config {
description
"Configurable items at the global, physical interface
level";
oc-ext:telemetry-on-change;
uses interface-phys-config;
}
container state {
config false;
description
"Operational state data at the global interface level";
uses interface-phys-config;
uses interface-common-state;
uses interface-counters-state;
}
uses interface-phys-holdtime-top;
uses subinterfaces-top;
}
}
}
uses interfaces-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}]=SimpleContainerNode{version=Version[60fc1c1e], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-platform, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.13.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-platform {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/platform";
prefix "oc-platform";
import openconfig-platform-types { prefix oc-platform-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-yang-types { prefix oc-yang; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines a data model for representing a system
component inventory, which can include hardware or software
elements arranged in an arbitrary structure. The primary
relationship supported by the model is containment, e.g.,
components containing subcomponents.
It is expected that this model reflects every field replacable
unit on the device at a minimum (i.e., additional information
may be supplied about non-replacable components).
Every element in the inventory is termed a 'component' with each
component expected to have a unique name and type, and optionally
a unique system-assigned identifier and FRU number. The
uniqueness is guaranteed by the system within the device.
Components may have properties defined by the system that are
modeled as a list of key-value pairs. These may or may not be
user-configurable. The model provides a flag for the system
to optionally indicate which properties are user configurable.
Each component also has a list of 'subcomponents' which are
references to other components. Appearance in a list of
subcomponents indicates a containment relationship as described
above. For example, a linecard component may have a list of
references to port components that reside on the linecard.
This schema is generic to allow devices to express their own
platform-specific structure. It may be augmented by additional
component type-specific schemas that provide a common structure
for well-known component types. In these cases, the system is
expected to populate the common component schema, and may
optionally also represent the component and its properties in the
generic structure.
The properties for each component may include dynamic values,
e.g., in the 'state' part of the schema. For example, a CPU
component may report its utilization, temperature, or other
physical properties. The intent is to capture all platform-
specific physical data in one location, including inventory
(presence or absence of a component) and state (physical
attributes or status).";
oc-ext:openconfig-version "0.13.0";
revision "2021-01-18" {
description
"Add container for software module component";
reference "0.13.0";
}
revision "2019-04-16" {
description
"Fix bug in parent path reference";
reference "0.12.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.12.1";
}
revision "2018-06-29" {
description
"Added location description for components";
reference "0.12.0";
}
revision "2018-06-03" {
description
"Added parent reference, empty flag and preconfiguration
for components";
reference "0.11.0";
}
revision "2018-04-20" {
description
"Added new per-component state data: mfg-date and removable";
reference "0.10.0";
}
revision "2018-01-30" {
description
"Amended approach for modelling CPU - rather than having
a local CPU utilisation state variable, a component with
a CPU should create a subcomponent of type CPU to report
statistics.";
reference "0.9.0";
}
revision "2018-01-16" {
description
"Added new per-component common data; add temp alarm;
moved hardware-port reference to port model";
reference "0.8.0";
}
revision "2017-12-14" {
description
"Added anchor containers for component data, added new
component types";
reference "0.7.0";
}
revision "2017-08-16" {
description
"Added power state enumerated type";
reference "0.6.0";
}
revision "2016-12-22" {
description
"Added temperature state variable to component";
reference "0.5.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping platform-component-properties-config {
description
"System-defined configuration data for component properties";
leaf name {
type string;
description
"System-supplied name of the property -- this is typically
non-configurable";
}
leaf value {
type union {
type string;
type boolean;
type int64;
type uint64;
type decimal64 {
fraction-digits 2;
}
}
description
"Property values can take on a variety of types. Signed and
unsigned integer types may be provided in smaller sizes,
e.g., int8, uint16, etc.";
}
}
grouping platform-component-properties-state {
description
"Operational state data for component properties";
leaf configurable {
type boolean;
description
"Indication whether the property is user-configurable";
}
}
grouping platform-component-properties-top {
description
"Top-level grouping ";
container properties {
description
"Enclosing container ";
list property {
key "name";
description
"List of system properties for the component";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the property name.";
}
container config {
description
"Configuration data for each property";
uses platform-component-properties-config;
}
container state {
config false;
description
"Operational state data for each property";
uses platform-component-properties-config;
uses platform-component-properties-state;
}
}
}
}
grouping platform-subcomponent-ref-config {
description
"Configuration data for subcomponent references";
leaf name {
type leafref {
path "../../../../../component/config/name";
}
description
"Reference to the name of the subcomponent";
}
}
grouping platform-subcomponent-ref-state {
description
"Operational state data for subcomponent references";
}
grouping platform-subcomponent-ref-top {
description
"Top-level grouping for list of subcomponent references";
container subcomponents {
description
"Enclosing container for subcomponent references";
list subcomponent {
key "name";
description
"List of subcomponent references";
leaf name {
type leafref {
path "../config/name";
}
description
"Reference to the name list key";
}
container config {
description
"Configuration data for the subcomponent";
uses platform-subcomponent-ref-config;
}
container state {
config false;
description
"Operational state data for the subcomponent";
uses platform-subcomponent-ref-config;
uses platform-subcomponent-ref-state;
}
}
}
}
grouping platform-component-config {
description
"Configuration data for components";
leaf name {
type string;
description
"Device name for the component -- this may not be a
configurable parameter on many implementations. Where
component preconfiguration is supported, for example,
the component name may be configurable.";
}
}
grouping platform-component-state {
description
"Operational state data for device components.";
leaf type {
type union {
type identityref {
base oc-platform-types:OPENCONFIG_HARDWARE_COMPONENT;
}
type identityref {
base oc-platform-types:OPENCONFIG_SOFTWARE_COMPONENT;
}
}
description
"Type of component as identified by the system";
}
leaf id {
type string;
description
"Unique identifier assigned by the system for the
component";
}
leaf location {
type string;
description
"System-supplied description of the location of the
component within the system. This could be a bay position,
slot number, socket location, etc. For component types that
have an explicit slot-id attribute, such as linecards, the
system should populate the more specific slot-id.";
}
leaf description {
type string;
description
"System-supplied description of the component";
}
leaf mfg-name {
type string;
description
"System-supplied identifier for the manufacturer of the
component. This data is particularly useful when a
component manufacturer is different than the overall
device vendor.";
}
leaf mfg-date {
type oc-yang:date;
description
"System-supplied representation of the component's
manufacturing date.";
}
leaf hardware-version {
type string;
description
"For hardware components, this is the hardware revision of
the component.";
}
leaf firmware-version {
type string;
description
"For hardware components, this is the version of associated
firmware that is running on the component, if applicable.";
}
leaf software-version {
type string;
description
"For software components such as operating system or other
software module, this is the version of the currently
running software.";
}
leaf serial-no {
type string;
description
"System-assigned serial number of the component.";
}
leaf part-no {
type string;
description
"System-assigned part number for the component. This should
be present in particular if the component is also an FRU
(field replaceable unit)";
}
leaf removable {
type boolean;
description
"If true, this component is removable or is a field
replaceable unit";
}
leaf oper-status {
type identityref {
base oc-platform-types:COMPONENT_OPER_STATUS;
}
description
"If applicable, this reports the current operational status
of the component.";
}
leaf empty {
type boolean;
default false;
description
"The empty leaf may be used by the device to indicate that a
component position exists but is not populated. Using this
flag, it is possible for the management system to learn how
many positions are available (e.g., occupied vs. empty
linecard slots in a chassis).";
}
leaf parent {
type leafref {
path "../../../component/config/name";
}
description
"Reference to the name of the parent component. Note that
this reference must be kept synchronized with the
corresponding subcomponent reference from the parent
component.";
}
}
grouping platform-component-temp-alarm-state {
description
"Temperature alarm data for platform components";
// TODO(aashaikh): consider if these leaves could be in a
// reusable grouping (not temperature-specific); threshold
// may always need to be units specific.
leaf alarm-status {
type boolean;
description
"A value of true indicates the alarm has been raised or
asserted. The value should be false when the alarm is
cleared.";
}
leaf alarm-threshold {
type uint32;
description
"The threshold value that was crossed for this alarm.";
}
leaf alarm-severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity of the current alarm.";
}
}
grouping platform-component-power-state {
description
"Power-related operational state for device components.";
leaf allocated-power {
type uint32;
units watts;
description
"Power allocated by the system for the component.";
}
leaf used-power {
type uint32;
units watts;
description
"Actual power used by the component.";
}
}
grouping platform-component-temp-state {
description
"Temperature state data for device components";
container temperature {
description
"Temperature in degrees Celsius of the component. Values include
the instantaneous, average, minimum, and maximum statistics. If
avg/min/max statistics are not supported, the target is expected
to just supply the instant value";
uses oc-platform-types:avg-min-max-instant-stats-precision1-celsius;
uses platform-component-temp-alarm-state;
}
}
grouping platform-component-memory-state {
description
"Per-component memory statistics";
container memory {
description
"For components that have associated memory, these values
report information about available and utilized memory.";
leaf available {
type uint64;
units bytes;
description
"The available memory physically installed, or logically
allocated to the component.";
}
// TODO(aashaikh): consider if this needs to be a
// min/max/avg statistic
leaf utilized {
type uint64;
units bytes;
description
"The memory currently in use by processes running on
the component, not considering reserved memory that is
not available for use.";
}
}
}
grouping platform-anchors-top {
description
"This grouping is used to add containers for components that
are common across systems, but do not have a defined schema
within the openconfig-platform module. Containers should be
added to this grouping for components that are expected to
exist in multiple systems, with corresponding modules
augmenting the config/state containers directly.";
container chassis {
description
"Data for chassis components";
container config {
description
"Configuration data for chassis components";
}
container state {
config false;
description
"Operational state data for chassis components";
}
}
// TODO(aashaikh): linecard container is already defined in
// openconfig-platform-linecard; will move to this module
// in future.
/*
container linecard {
description
"Data for linecard components";
container config {
description
"Configuration data for linecard components";
}
container state {
config false;
description
"Operational state data for linecard components";
}
}
*/
container port {
description
"Data for physical port components";
container config {
description
"Configuration data for physical port components";
}
container state {
config false;
description
"Operational state data for physical port components";
}
}
// TODO(aashaikh): transceiver container is already defined in
// openconfig-platform-transceiver; will move to this module
// in future.
/*
container transceiver {
description
"Data for transceiver components";
container config {
description
"Configuration data for transceiver components";
}
container state {
config false;
description
"Operational state data for transceiver components";
}
}
*/
container power-supply {
description
"Data for power supply components";
container config {
description
"Configuration data for power supply components";
}
container state {
config false;
description
"Operational state data for power supply components";
}
}
container fan {
description
"Data for fan components";
container config {
description
"Configuration data for fan components";
}
container state {
config false;
description
"Operational state data for fan components";
}
}
container fabric {
description
"Data for fabric components";
container config {
description
"Configuration data for fabric components";
}
container state {
config false;
description
"Operational state data for fabric components";
}
}
container storage {
description
"Data for storage components";
container config {
description
"Configuration data for storage components";
}
container state {
config false;
description
"Operational state data for storage components";
}
}
container cpu {
description
"Data for cpu components";
container config {
description
"Configuration data for cpu components";
}
container state {
config false;
description
"Operational state data for cpu components";
}
}
container integrated-circuit {
description
"Data for chip components, such as ASIC, NPUs, etc.";
container config {
description
"Configuration data for chip components";
}
container state {
config false;
description
"Operational state data for chip components";
}
}
container backplane {
description
"Data for backplane components";
container config {
description
"Configuration data for backplane components";
}
container state {
config false;
description
"Operational state data for backplane components";
}
}
container software-module {
description
"Data for software module components, i.e., for components
with type=SOFTWARE_MODULE";
container config {
description
"Configuration data for software module components";
}
container state {
config false;
description
"Operational state data for software module components";
}
}
}
grouping platform-component-top {
description
"Top-level grouping for components in the device inventory";
container components {
description
"Enclosing container for the components in the system.";
list component {
key "name";
description
"List of components, keyed by component name.";
leaf name {
type leafref {
path "../config/name";
}
description
"References the component name";
}
container config {
description
"Configuration data for each component";
uses platform-component-config;
}
container state {
config false;
description
"Operational state data for each component";
uses platform-component-config;
uses platform-component-state;
uses platform-component-temp-state;
uses platform-component-memory-state;
uses platform-component-power-state;
}
uses platform-component-properties-top;
uses platform-subcomponent-ref-top;
uses platform-anchors-top;
}
}
}
// data definition statements
uses platform-component-top;
// augments
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-platform}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.13.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}]=SimpleContainerNode{version=Version[7321f020], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-messages, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.0.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-messages {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/messages";
prefix "oc-messages";
// import some basic types
import openconfig-extensions { prefix "oc-ext"; }
import openconfig-system-logging { prefix "oc-log"; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to Syslog messages that a device may generate.
These messages are historically obtained through the Syslog
transport, however this module allows for obtaining them through
an alternative transport, such as a Subscribe operation over an
RPC.
This module does not usurp traditional syslog servers, which may
still be configured through the
/yang/system/openconfig-system.yang model, rather it provies the
Operator with an alternative method of consuming messages.";
oc-ext:openconfig-version "0.0.1";
revision "2018-08-13" {
description
"Initial draft.";
reference "0.0.1";
}
// identity statements
identity DEBUG_SERVICE {
description
"Base identity for debug services. Identities within this base
identity are to be augmented in by vendors.";
}
// grouping statements
grouping messages-config {
description
"Configuration data for defining Syslog message severity.";
leaf severity {
type oc-log:syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) are sent over the RPC.
This is analogous to differentiating which severity is to be
sent to legacy Syslog servers, as opposed to local buffer or
files.";
}
}
grouping messages-state {
description
"Operational state data for Syslog messages.";
container message {
oc-ext:telemetry-atomic;
config false;
description
"Syslog messages the client is Subscribing to. This is all
messages currently configured to be sent according to
syslog-severity.";
reference
"IETF RFC 5424 - The Syslog Protocol";
// Decide if it is OK to include ALL in this leaf.
leaf msg {
type string;
description
"Message payload. If other leafs within this container not
supported, this leaf MAY include the entire message,
inclding pri, procid, app-name etc..";
}
leaf priority {
type uint8;
description
"The Priority value (PRIVAL) represents both the
Facility and Severity.";
reference
"IETF RFC 5424, Section 6.2.1";
}
leaf app-name {
type string;
description
"The APP-NAME field SHOULD identify the device or
application that originated the message.";
reference
"IETF RFC 5424, Section 6.2.5.";
}
leaf procid {
type string;
description
"PROCID is a value that is included in the message, having
no interoperable meaning, except that a change in the value
indicates there has been a discontinuity in syslog
reporting.";
reference
"IETF RFC 5424, Section 6.2.6.";
}
leaf msgid {
type string;
description
"The MSGID SHOULD identify the type of message. For
example, a firewall might use the MSGID 'TCPIN' for
incoming TCP traffic and the MSGID 'TCPOUT' for outgoing
TCP traffic.";
reference
"IETF RFC 5424, Section 6.2.7.";
}
}
}
grouping debug-messages-config {
description
"Configuration data for enabling debug messages.";
leaf service {
type identityref {
base DEBUG_SERVICE;
}
description
"Enumeration of all services which can have debugging enabled.
Vendors are to augment this base identity with their platform
or OS specific debug options.";
}
leaf enabled {
type boolean;
default false;
description
"Enable and disable debugging.";
}
}
grouping debug-messages-top {
description
"Configuration data for enabling Syslog debug messages.";
container debug-entries {
description
"Enclosing container for list of debugs to enable.";
list debug-service {
key "service";
description
"List of debugging entries.";
leaf service {
type leafref {
path "../config/service";
}
description
"Reference to the debug-enable service key.";
}
container config {
description
"Configuration data for debug service entries.";
uses debug-messages-config;
}
container state {
config false;
description
"Operational state data for enabled debugs.";
uses debug-messages-config;
}
}
}
}
grouping messages-top {
description
"Top-level grouping for Syslog messages.";
container messages {
description
"Top-level container for Syslog messages.";
container config {
description
"Configuration data for Syslog messages.";
uses messages-config;
}
container state {
config false;
description
"Operational state data for a Syslog messages.";
uses messages-config;
uses messages-state;
}
uses debug-messages-top;
}
}
uses messages-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-messages}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.0.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}]=SimpleContainerNode{version=Version[32715974], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-yang-types {
yang-version "1";
namespace "http://openconfig.net/yang/types/yang";
prefix "oc-yang";
import openconfig-extensions { prefix "oc-ext"; }
organization
"OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module contains a set of extension types to the
YANG builtin types that are used across multiple
OpenConfig models.
Portions of this code were derived from IETF RFC 6021.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.0";
revision "2021-03-02" {
description
"Fix date-and-time and date's pattern statement, and remove the
regexp-posix extension, which makes pattern statements conform to the
YANG standard.";
reference "0.3.0";
}
revision "2020-06-30" {
description
"Add OpenConfig POSIX pattern extensions.";
reference "0.2.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision 2018-04-24 {
description
"Add date typedef";
reference "0.2.0";
}
revision 2017-07-30 {
description
"Fixed unprintable character";
reference "0.1.2";
}
revision 2017-04-03 {
description
"Update copyright notice.";
reference "0.1.1";
}
revision 2017-01-26 {
description
"Initial module for inet types";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
typedef dotted-quad {
type string {
pattern '(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])';
oc-ext:posix-pattern '^(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|' +
'25[0-5])\.){3}([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4]' +
'[0-9]|25[0-5])$';
}
description
"An unsigned 32-bit integer expressed as a dotted quad. The
format is four octets written as decimal numbers separated
with a period character.";
}
typedef hex-string {
type string {
pattern '[0-9a-fA-F]*';
oc-ext:posix-pattern '[0-9a-fA-F]*';
}
description
"A string consisting of a hexadecimal characters.";
}
typedef counter32 {
type uint32;
description
"A 32-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When the counter
reaches its maximum value, in this case 2^32-1, it wraps to 0.
Discontinuities in the counter are generally triggered only when
the counter is reset to zero.";
}
typedef counter64 {
type uint64;
description
"A 64-bit counter. A counter value is a monotonically increasing
value which is used to express a count of a number of
occurrences of a particular event or entity. When a counter64
reaches its maximum value, 2^64-1, it loops to zero.
Discontinuities in a counter are generally triggered only when
the counter is reset to zero, through operator or system
intervention.";
}
typedef date-and-time {
type string {
pattern
'[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])T' +
'([0-1][0-9]|2[0-3]):[0-5][0-9]:([0-5][0-9]|60)' +
'(\.[0-9]+)?(Z|([+-]([0-1][0-9]|2[0-3]):[0-5][0-9]))$';
}
description
"A date and time, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DDTHH:MM:SSZ+-hh:mm
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value. T is the literal character 'T',
HH is the hour of the day expressed as a two digit number, using
the 24-hour clock, MM is the minute of the hour expressed as a
two digit number. Z is the literal character 'Z', followed by a
timezone offset expressed in hours (hh) and minutes (mm), both
expressed as two digit numbers. The time offset is specified as
a positive or negative offset to UTC using the '+' or '-'
character preceding the offset.
Optionally, fractional seconds can be expressed after the minute
of the hour as a decimal number of unspecified precision
reflecting fractions of a second.";
reference
"RFC3339 - Date and Time on the Internet: Timestamps";
}
typedef date {
type string {
pattern '[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])';
oc-ext:posix-pattern
'^[0-9]{4}\-(0[1-9]|1[0-2])\-(0[1-9]|[1-2][0-9]|3[0-1])$';
}
description
"A full UTC date, expressed in the format described in RFC3339.
That is to say:
YYYY-MM-DD
where YYYY is the year, MM is the month expressed as a two-digit
month (zero padding if required), DD is the day of the month,
expressed as a two digit value.";
reference
"RFC3339 - Date and Time on the Internet: full-date";
}
typedef gauge64 {
type uint64;
description
"A gauge value may increase or decrease - and reflects a value
at a particular point in time. If the value of the variable
being modeled using the gauge exceeds its maximum - 2^64-1 in
this case - the gauge is set to its maximum value.";
}
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
oc-ext:posix-pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A physical layer address, expressed as a series of pairs of
hexadecimal digits.";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
oc-ext:posix-pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"An IEEE 802 MAC address";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.10.0}]=SimpleContainerNode{version=Version[6bc5dbd2], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.10.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system";
prefix "oc-sys";
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-yang-types { prefix oc-yang; }
import openconfig-types { prefix oc-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa { prefix oc-aaa; }
import openconfig-system-logging { prefix oc-log; }
import openconfig-system-terminal { prefix oc-sys-term; }
import openconfig-procmon { prefix oc-proc; }
import openconfig-alarms { prefix oc-alarms; }
import openconfig-messages { prefix oc-messages; }
import openconfig-license { prefix oc-license; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing system-wide services and functions on
network devices.
Portions of this code were derived from IETF RFC 7317.
Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.10.0";
revision "2020-04-13" {
description
"Remove the existing grpc-service, and add a new list
of the gRPC servers in a new module.";
reference "0.10.0";
}
revision "2020-03-25" {
description
"Fix typo in description statement for ipv4-address
list.";
reference "0.9.1";
}
revision "2020-01-07" {
description
"Add import of license management model.";
reference "0.9.0";
}
revision "2019-03-15" {
description
"Update boot time to be nanoseconds since epoch.";
reference "0.8.0";
}
revision "2019-01-29" {
description
"Add messages module to the system model";
reference "0.7.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.6.1";
}
revision "2018-07-17" {
description
"Add gRPC server data";
reference "0.6.0";
}
revision "2018-01-21" {
description
"Add cpu utilization data";
reference "0.5.0";
}
revision "2017-12-15" {
description
"Add alarms to the system model";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity NTP_AUTH_TYPE {
description
"Base identity for encryption schemes supported for NTP
authentication keys";
}
identity NTP_AUTH_MD5 {
base NTP_AUTH_TYPE;
description
"MD5 encryption method";
}
// typedef statements
typedef timezone-name-type {
type string;
description
"A time zone name as used by the Time Zone Database,
sometimes referred to as the 'Olson Database'.
The exact set of valid values is an implementation-specific
matter. Client discovery of the exact set of time zone names
for a particular server is out of scope.";
reference
"BCP 175: Procedures for Maintaining the Time Zone Database";
}
// grouping statements
grouping system-clock-config {
description
"Configuration data for system-wide clock configuration";
leaf timezone-name {
type timezone-name-type;
description
"The TZ database name to use for the system, such
as 'Europe/Stockholm'.";
reference "IANA Time Zone Database
http://www.iana.org/time-zones";
}
}
grouping system-clock-state {
description
"Operational state data for system-wide clock configuration";
}
grouping system-clock-top {
description
"Top-level grouping for system-wide clock configuration";
container clock {
description
"Top-level container for clock configuration data";
container config {
description
"Configuration data for system clock";
uses system-clock-config;
}
container state {
config false;
description
"Operational state data for system clock";
uses system-clock-config;
uses system-clock-state;
}
}
}
grouping system-global-config {
description "system-wide configuration parameters";
leaf hostname {
type oc-inet:domain-name;
description
"The hostname of the device -- should be a single domain
label, without the domain.";
}
leaf domain-name {
type oc-inet:domain-name;
description
"Specifies the domain name used to form fully qualified name
for unqualified hostnames.";
}
leaf login-banner {
type string;
description
"The console login message displayed before the login prompt,
i.e., before a user logs into the system.";
}
leaf motd-banner {
type string;
description
"The console message displayed after a user logs into the
system. They system may append additional standard
information such as the current system date and time, uptime,
last login timestamp, etc.";
}
}
grouping system-global-state {
description
"Global operational state data for the system";
leaf current-datetime {
type oc-yang:date-and-time;
description
"The current system date and time.";
}
leaf boot-time {
type oc-types:timeticks64;
units "nanoseconds";
description
"This timestamp indicates the time that the system was last
restarted. The value is the timestamp in nanoseconds relative
to the Unix Epoch (Jan 1, 1970 00:00:00 UTC).";
}
}
grouping system-dns-config {
description "DNS / resolver related configuration data";
leaf-list search {
type oc-inet:domain-name;
ordered-by user;
description
"An ordered list of domains to search when resolving
a host name.";
}
}
grouping system-dns-state {
description
"Operational state data for system DNS resolver";
}
grouping system-dns-servers-config {
description
"Configuration data for DNS resolvers";
//RFC 7317 includes a single-value choice statement to for
//TCP and UDP transport. This has been removed since it the
//transport protocol is not generally available as an options
//on target devices. It may be added back if and when needed.
leaf address {
type oc-inet:ip-address;
description
"The address of the DNS server, can be either IPv4
or IPv6.";
}
leaf port {
type oc-inet:port-number;
default 53;
description
"The port number of the DNS server.";
}
//RFC 7317 includes resolver timeout and attempts options. These
//have been omitted as they are not available on many targets. If
//and when they are required, they may be added back in.
}
grouping system-dns-static-config {
description
"Configuration data for static host entries";
leaf hostname {
type string;
description
"Hostname for the static DNS entry";
}
leaf-list alias {
type string;
description
"Additional aliases for the hostname";
}
leaf-list ipv4-address {
type oc-inet:ipv4-address;
description
"List of IPv4 addresses for the host entry";
}
leaf-list ipv6-address {
type oc-inet:ipv6-address;
description
"List of IPv6 addresses for the host entry";
}
}
grouping system-dns-static-state {
description
"Operational state data for static host entries";
}
grouping system-dns-static-top {
description
"Top-level grouping for static DNS host entries";
container host-entries {
description
"Enclosing container for list of static host entries";
list host-entry {
key "hostname";
description
"List of static host entries";
leaf hostname {
type leafref {
path "../config/hostname";
}
description
"Reference to the hostname list key";
}
container config {
description
"Configuration data for static host entries";
uses system-dns-static-config;
}
container state {
config false;
description
"Operational state data for static host entries";
uses system-dns-static-config;
uses system-dns-static-state;
}
}
}
}
grouping system-dns-servers-state {
description
"Operational state data for DNS resolvers";
}
grouping system-dns-servers-top {
description
"Top-level grouping for the list of DNS resolvers.";
container servers {
description
"Enclosing container for DNS resolver list";
list server {
key "address";
ordered-by user;
description
"List of the DNS servers that the resolver should query.
When the resolver is invoked by a calling application, it
sends the query to the first name server in this list. If
no response has been received within 'timeout' seconds,
the resolver continues with the next server in the list.
If no response is received from any server, the resolver
continues with the first server again. When the resolver
has traversed the list 'attempts' times without receiving
any response, it gives up and returns an error to the
calling application.
Implementations MAY limit the number of entries in this
list.";
leaf address {
type leafref {
path "../config/address";
}
description
"References the configured address of the DNS server";
}
container config {
description
"Configuration data for each DNS resolver";
uses system-dns-servers-config;
}
container state {
config false;
description
"Operational state data for each DNS resolver";
uses system-dns-servers-config;
uses system-dns-servers-state;
}
}
}
}
grouping system-dns-top {
description
"Top-level grouping for DNS / resolver config and operational
state data";
container dns {
description
"Enclosing container for DNS resolver data";
container config {
description
"Configuration data for the DNS resolver";
uses system-dns-config;
}
container state {
config false;
description
"Operational state data for the DNS resolver";
uses system-dns-config;
uses system-dns-state;
}
uses system-dns-servers-top;
uses system-dns-static-top;
}
}
grouping system-ntp-server-config {
description
"Configuration data for NTP servers";
leaf address {
type oc-inet:host;
description
"The address or hostname of the NTP server.";
}
leaf port {
type oc-inet:port-number;
default 123;
description
"The port number of the NTP server.";
}
leaf version {
type uint8 {
range 1..4;
}
default 4;
description
"Version number to put in outgoing NTP packets";
}
leaf association-type {
type enumeration {
enum SERVER {
description
"Use client association mode. This device
will not provide synchronization to the
configured NTP server.";
}
enum PEER {
description
"Use symmetric active association mode.
This device may provide synchronization
to the configured NTP server.";
}
enum POOL {
description
"Use client association mode with one or
more of the NTP servers found by DNS
resolution of the domain name given by
the 'address' leaf. This device will not
provide synchronization to the servers.";
}
}
default SERVER;
description
"The desired association type for this NTP server.";
}
leaf iburst {
type boolean;
default false;
description
"Indicates whether this server should enable burst
synchronization or not.";
}
leaf prefer {
type boolean;
default false;
description
"Indicates whether this server should be preferred
or not.";
}
}
grouping system-ntp-server-state {
description
"Operational state data for NTP servers";
leaf stratum {
type uint8;
description
"Indicates the level of the server in the NTP hierarchy. As
stratum number increases, the accuracy is degraded. Primary
servers are stratum while a maximum value of 16 indicates
unsynchronized. The values have the following specific
semantics:
| 0 | unspecified or invalid
| 1 | primary server (e.g., equipped with a GPS receiver)
| 2-15 | secondary server (via NTP)
| 16 | unsynchronized
| 17-255 | reserved";
reference
"RFC 5905 - Network Time Protocol Version 4: Protocol and
Algorithms Specification";
}
leaf root-delay {
type uint32;
// TODO: reconsider units for these values -- the spec defines
// rootdelay and rootdisperson as 2 16-bit integers for seconds
// and fractional seconds, respectively. This gives a
// precision of ~15 us (2^-16). Using milliseconds here based
// on what implementations typically provide and likely lack
// of utility for less than millisecond precision with NTP
// time sync.
units "milliseconds";
description
"The round-trip delay to the server, in milliseconds.";
reference
"RFC 5905 - Network Time Protocol Version 4: Protocol and
Algorithms Specification";
}
leaf root-dispersion {
type uint64;
units "milliseconds";
description
"Dispersion (epsilon) represents the maximum error inherent
in the measurement";
reference
"RFC 5905 - Network Time Protocol Version 4: Protocol and
Algorithms Specification";
}
leaf offset {
type uint64;
units "milliseconds";
description
"Estimate of the current time offset from the peer. This is
the time difference between the local and reference clock.";
}
leaf poll-interval {
type uint32;
units "seconds";
description
"Polling interval of the peer";
}
}
grouping system-ntp-server-top {
description
"Top-level grouping for the list of NTP servers";
container servers {
description
"Enclosing container for the list of NTP servers";
list server {
key "address";
description
"List of NTP servers to use for system clock
synchronization. If '/system/ntp/enabled'
is 'true', then the system will attempt to
contact and utilize the specified NTP servers.";
leaf address {
type leafref {
path "../config/address";
}
description
"References the configured address or hostname of the
NTP server.";
}
container config {
description
"Configuration data for an NTP server.";
uses system-ntp-server-config;
}
container state {
config false;
description
"Operational state data for an NTP server.";
uses system-ntp-server-config;
uses system-ntp-server-state;
}
}
}
}
grouping system-ntp-auth-keys-config {
description
"Configuration data ";
leaf key-id {
type uint16;
description
"Integer identifier used by the client and server to
designate a secret key. The client and server must use
the same key id.";
}
leaf key-type {
type identityref {
base NTP_AUTH_TYPE;
}
description
"Encryption type used for the NTP authentication key";
}
leaf key-value {
type string;
description
"NTP authentication key value";
}
}
grouping system-ntp-auth-keys-state {
description
"Operational state data for NTP auth key data";
}
grouping system-ntp-auth-keys-top {
description
"Top-level grouping for NTP auth key data";
container ntp-keys {
description
"Enclosing container for list of NTP authentication keys";
list ntp-key {
key "key-id";
description
"List of NTP authentication keys";
leaf key-id {
type leafref {
path "../config/key-id";
}
description
"Reference to auth key-id list key";
}
container config {
description
"Configuration data for NTP auth keys";
uses system-ntp-auth-keys-config;
}
container state {
config false;
description
"Operational state data for NTP auth keys";
uses system-ntp-auth-keys-config;
uses system-ntp-auth-keys-state;
}
}
}
}
grouping system-ntp-config {
description
"Configuration data for system-wide NTP operation.";
leaf enabled {
type boolean;
default false;
description
"Enables the NTP protocol and indicates that the system should
attempt to synchronize the system clock with an NTP server
from the servers defined in the 'ntp/server' list.";
}
leaf ntp-source-address {
type oc-inet:ip-address;
description
"Source address to use on outgoing NTP packets";
}
leaf enable-ntp-auth {
type boolean;
default false;
description
"Enable or disable NTP authentication -- when enabled, the
system will only use packets containing a trusted
authentication key to synchronize the time.";
}
}
grouping system-ntp-state {
description
"Operational state data for system-wide NTP operation.";
leaf auth-mismatch {
type oc-yang:counter64;
description
"Count of the number of NTP packets received that were not
processed due to authentication mismatch.";
}
}
grouping system-ntp-top {
description
"Top-level grouping for configuration and state data for NTP";
container ntp {
description
"Top-level container for NTP configuration and state";
container config {
description
"Configuration data for NTP client.";
uses system-ntp-config;
}
container state {
config false;
description
"Operational state data for NTP services.";
uses system-ntp-config;
uses system-ntp-state;
}
uses system-ntp-auth-keys-top;
uses system-ntp-server-top;
}
}
grouping system-memory-config {
description
"Configuration data for system memory";
}
grouping system-memory-state {
description
"Operational state data for system memory";
leaf physical {
type uint64;
units bytes;
// TODO: consider making units in megabytes
description
"Reports the total physical memory available on the
system.";
}
leaf reserved {
type uint64;
units bytes;
description
"Memory reserved for system use";
}
}
grouping system-memory-top {
description
"Top-level grouping for system memory data definitions";
container memory {
description
"Top-level container for system memory data";
container config {
description
"Configuration data for system memory";
uses system-memory-config;
}
container state {
config false;
description
"Operational state data for system memory";
uses system-memory-config;
uses system-memory-state;
}
}
}
grouping system-cpu-state {
description
"Operational state data for the system CPU(s)";
leaf index {
type union {
type enumeration {
enum ALL {
description
"Index value indicating all CPUs in the system";
}
}
type uint32;
}
description
"The CPU index for each processor core on the system. On a
single-core system, the index should be zero. The ALL
index signifies an aggregation of the CPU utilization
statistics over all cores in the system.";
}
container total {
description
"Total CPU utilization.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container user {
description
"Percentage of CPU time spent running in user space.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container kernel {
description
"Percentage of CPU time spent running in kernel space.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container nice {
description
"Percentage of CPU time spent running low-priority (niced)
user processes.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container idle {
description
"Percentage of CPU time spent idle.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container wait {
description
"Percentage of CPU time spent waiting for I/O.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container hardware-interrupt {
description
"Percentage of CPU time spent servicing hardware interrupts.";
uses oc-types:avg-min-max-instant-stats-pct;
}
container software-interrupt {
description
"Percentage of CPU time spent servicing software interrupts";
uses oc-types:avg-min-max-instant-stats-pct;
}
}
grouping system-cpu-top {
description
"Top-level grouping for system CPU data";
container cpus {
config false;
description
"Enclosing container for the list of CPU cores on the
system";
list cpu {
key "index";
description
"List of CPU cores on the system (including logical CPUs
on hyperthreaded systems), keyed by either a numerical
index, or the ALL value for an entry representing the
aggregation across all CPUs.";
leaf index {
type leafref {
path "../state/index";
}
description
"Reference to list key";
}
container state {
description
"Operational state data for the system CPU(s)";
uses system-cpu-state;
}
}
}
}
grouping system-top {
description
"Top level system data containers";
container system {
description
"Enclosing container for system-related configuration and
operational state data";
container config {
description "Global configuration data for the system";
uses system-global-config;
}
container state {
config false;
description "Global operational state data for the system";
uses system-global-config;
uses system-global-state;
}
uses system-clock-top;
uses system-dns-top;
uses system-ntp-top;
uses oc-sys-term:system-ssh-server-top;
uses oc-sys-term:system-telnet-server-top;
uses oc-log:logging-top;
uses oc-aaa:aaa-top;
uses system-memory-top;
uses system-cpu-top;
uses oc-proc:procmon-processes-top;
uses oc-alarms:alarms-top;
uses oc-messages:messages-top;
uses oc-license:license-top;
}
}
// data definition statements
uses system-top;
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.10.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}]=SimpleContainerNode{version=Version[376ca37d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.2.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-types {
yang-version "1";
namespace "http://openconfig.net/yang/openconfig-if-types";
prefix "oc-ift";
// import statements
import openconfig-extensions { prefix oc-ext; }
// meta
organization
"OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module contains a set of interface type definitions that
are used across OpenConfig models. These are generally physical
or logical interfaces, distinct from hardware ports (which are
described by the OpenConfig platform model).";
oc-ext:openconfig-version "0.2.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.2.1";
}
revision "2018-01-05" {
description
"Add tunnel types into the INTERFACE_TYPE identity.";
reference "0.2.0";
}
revision "2016-11-14" {
description
"Initial version";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
identity INTERFACE_TYPE {
description
"Base identity from which interface types are derived.";
}
identity IF_ETHERNET {
base INTERFACE_TYPE;
description
"Ethernet interfaces based on IEEE 802.3 standards, as well
as FlexEthernet";
reference
"IEEE 802.3-2015 - IEEE Standard for Ethernet
OIF Flex Ethernet Implementation Agreement 1.0";
}
identity IF_AGGREGATE {
base INTERFACE_TYPE;
description
"An aggregated, or bonded, interface forming a
Link Aggregation Group (LAG), or bundle, most often based on
the IEEE 802.1AX (or 802.3ad) standard.";
reference
"IEEE 802.1AX-2008";
}
identity IF_LOOPBACK {
base INTERFACE_TYPE;
description
"A virtual interface designated as a loopback used for
various management and operations tasks.";
}
identity IF_ROUTED_VLAN {
base INTERFACE_TYPE;
description
"A logical interface used for routing services on a VLAN.
Such interfaces are also known as switch virtual interfaces
(SVI) or integrated routing and bridging interfaces (IRBs).";
}
identity IF_SONET {
base INTERFACE_TYPE;
description
"SONET/SDH interface";
}
identity IF_TUNNEL_GRE4 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv4 transport.";
}
identity IF_TUNNEL_GRE6 {
base INTERFACE_TYPE;
description
"A GRE tunnel over IPv6 transport.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.2.1}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}]=SimpleContainerNode{version=Version[59ada828], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-if-aggregate, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2.4.3}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-if-aggregate {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/interfaces/aggregate";
prefix "oc-lag";
// import some basic types
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import iana-if-type { prefix ianaift; }
import openconfig-if-types { prefix oc-ift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"Model for managing aggregated (aka bundle, LAG) interfaces.";
oc-ext:openconfig-version "2.4.3";
revision "2020-05-01" {
description
"Update when statements to reference config nodes
from config true elements.";
reference "2.4.3";
}
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "2.4.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "2.3.2";
}
revision "2018-03-23" {
description
"Fix/cleanup when statements in aggregates model.";
reference "2.3.1";
}
revision "2018-01-05" {
description
"Add logical loopback to interface.";
reference "2.3.0";
}
revision "2017-12-22" {
description
"Add IPv4 proxy ARP configuration.";
reference "2.2.0";
}
revision "2017-12-21" {
description
"Added IPv6 router advertisement configuration.";
reference "2.1.0";
}
revision "2017-07-14" {
description
"Added Ethernet/IP state data; Add dhcp-client;
migrate to OpenConfig types modules; Removed or
renamed opstate values";
reference "2.0.0";
}
revision "2016-12-22" {
description
"Fixes to Ethernet interfaces model";
reference "1.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
// typedef statements
typedef aggregation-type {
type enumeration {
enum LACP {
description "LAG managed by LACP";
}
enum STATIC {
description "Statically configured bundle / LAG";
}
}
description
"Type to define the lag-type, i.e., how the LAG is
defined and managed";
}
// grouping statements
grouping aggregation-logical-config {
description
"Configuration data for aggregate interfaces";
leaf lag-type {
type aggregation-type;
description
"Sets the type of LAG, i.e., how it is
configured / maintained";
}
leaf min-links {
type uint16;
description
"Specifies the mininum number of member
interfaces that must be active for the aggregate interface
to be available";
}
}
grouping aggregation-logical-state {
description
"Operational state data for aggregate interfaces";
leaf lag-speed {
type uint32;
units Mbps;
description
"Reports effective speed of the aggregate interface,
based on speed of active member interfaces";
}
leaf-list member {
when "../../config/lag-type = 'STATIC'" {
description
"The simple list of member interfaces is active
when the aggregate is statically configured";
}
type oc-if:base-interface-ref;
description
"List of current member interfaces for the aggregate,
expressed as references to existing interfaces";
}
}
grouping aggregation-logical-top {
description "Top-level data definitions for LAGs";
container aggregation {
description
"Options for logical interfaces representing
aggregates";
container config {
description
"Configuration variables for logical aggregate /
LAG interfaces";
uses aggregation-logical-config;
}
container state {
config false;
description
"Operational state variables for logical
aggregate / LAG interfaces";
uses aggregation-logical-config;
uses aggregation-logical-state;
}
}
}
grouping ethernet-if-aggregation-config {
description
"Adds configuration items for Ethernet interfaces
belonging to a logical aggregate / LAG";
leaf aggregate-id {
type leafref {
path "/oc-if:interfaces/oc-if:interface/oc-if:name";
}
description
"Specify the logical aggregate interface to which
this interface belongs";
}
}
// data definition statements
// augment statements
augment "/oc-if:interfaces/oc-if:interface" {
description "Adds LAG configuration to the interface module";
uses aggregation-logical-top {
when "oc-if:config/oc-if:type = 'ianaift:ieee8023adLag' or " +
"oc-if:config/oc-if:type = 'oc-ift:IF_AGGREGATE'" {
description
"active when the interface is set to type LAG";
}
}
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:config" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
augment "/oc-if:interfaces/oc-if:interface/oc-eth:ethernet/" +
"oc-eth:state" {
description
"Adds LAG settings to individual Ethernet interfaces";
uses ethernet-if-aggregation-config;
}
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-if-aggregate}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2.4.3}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}]=SimpleContainerNode{version=Version[11e46a72], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=iana-if-type, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2023-01-26}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module iana-if-type {
namespace "urn:ietf:params:xml:ns:yang:iana-if-type";
prefix ianaift;
import ietf-interfaces {
prefix if;
}
organization "IANA";
contact
" Internet Assigned Numbers Authority
Postal: ICANN
12025 Waterfront Drive, Suite 300
Los Angeles, CA 90094-2536
United States
Tel: +1 310 301 5800
";
description
"This YANG module defines YANG identities for IANA-registered
interface types.
This YANG module is maintained by IANA and reflects the
'ifType definitions' registry.
The latest revision of this YANG module can be obtained from
the IANA web site.
Requests for new values should be made to IANA via
email (iana@iana.org).
Copyright (c) 2014 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
The initial version of this YANG module is part of RFC 7224;
see the RFC itself for full legal notices.";
reference
"IANA 'ifType definitions' registry.
";
revision 2023-01-26 {
description
"Fix incorrect quotation for previous 3 revision statements.";
}
revision 2022-08-24 {
description
"Updated reference for ifType 303.";
}
revision 2022-08-17 {
description
"Changed gpon description to refer to G.984.";
}
revision 2022-03-07 {
description
"Coalesced revision history entries for 2018-06-28.";
}
revision 2021-06-21 {
description
"Corrected reference for ifType 303.";
}
revision 2021-05-17 {
description
"Registered ifType 303.";
}
revision 2021-04-22 {
description
"Registered ifType 302.";
}
revision 2021-04-01 {
description
"Updated reference for 301.";
}
revision 2021-02-18 {
description
"Registered ifType 301.";
}
revision 2020-08-27 {
description
"Added missing references.";
}
revision 2020-07-13 {
description
"Added identity cpri.";
}
revision 2020-07-10 {
description
"Registered ifType 300.";
}
revision 2020-01-10 {
description
"Registered ifType 299.";
}
revision 2019-10-16 {
description
"Registered ifType 298.";
}
revision 2019-07-16 {
description
"Registered ifType 297.";
}
revision 2019-06-21 {
description
"Updated reference associated with ifTypes 295-296.";
}
revision 2019-02-08 {
description
"Corrected formatting issue.";
}
revision 2019-01-31 {
description
"Registered ifTypes 295-296.";
}
revision 2018-07-03 {
description
"Corrected revision date.";
}
revision 2018-06-29 {
description
"Corrected formatting issue.";
}
revision 2018-06-28 {
description
"Registered ifTypes 293 and 294.";
}
revision 2018-06-22 {
description
"Registered ifType 292.";
}
revision 2018-06-21 {
description
"Registered ifType 291.";
}
revision 2017-03-30 {
description
"Registered ifType 290.";
}
revision 2017-01-19 {
description
"Registered ifType 289.";
}
revision 2016-11-23 {
description
"Registered ifTypes 283-288.";
}
revision 2016-06-09 {
description
"Registered ifType 282.";
}
revision 2016-05-03 {
description
"Registered ifType 281.";
}
revision 2015-06-12 {
description
"Corrected formatting issue.";
}
revision 2014-09-24 {
description
"Registered ifType 280.";
}
revision 2014-09-19 {
description
"Registered ifType 279.";
}
revision 2014-07-03 {
description
"Registered ifTypes 277-278.";
}
revision 2014-05-19 {
description
"Updated the contact address.";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7224: IANA Interface Type YANG Module";
}
identity iana-interface-type {
base if:interface-type;
description
"This identity is used as a base for all interface types
defined in the 'ifType definitions' registry.";
}
identity other {
base iana-interface-type;
}
identity regular1822 {
base iana-interface-type;
}
identity hdh1822 {
base iana-interface-type;
}
identity ddnX25 {
base iana-interface-type;
}
identity rfc877x25 {
base iana-interface-type;
reference
"RFC 1382 - SNMP MIB Extension for the X.25 Packet Layer";
}
identity ethernetCsmacd {
base iana-interface-type;
description
"For all Ethernet-like interfaces, regardless of speed,
as per RFC 3635.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88023Csmacd {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity iso88024TokenBus {
base iana-interface-type;
}
identity iso88025TokenRing {
base iana-interface-type;
}
identity iso88026Man {
base iana-interface-type;
}
identity starLan {
base iana-interface-type;
status deprecated;
description
"Deprecated via RFC 3635.
Use ethernetCsmacd(6) instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity proteon10Mbit {
base iana-interface-type;
}
identity proteon80Mbit {
base iana-interface-type;
}
identity hyperchannel {
base iana-interface-type;
}
identity fddi {
base iana-interface-type;
reference
"RFC 1512 - FDDI Management Information Base";
}
identity lapb {
base iana-interface-type;
reference
"RFC 1381 - SNMP MIB Extension for X.25 LAPB";
}
identity sdlc {
base iana-interface-type;
}
identity ds1 {
base iana-interface-type;
description
"DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity e1 {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
reference
"RFC 4805 - Definitions of Managed Objects for the
DS1, J1, E1, DS2, and E2 Interface Types";
}
identity basicISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity primaryISDN {
base iana-interface-type;
description
"No longer used. See also RFC 2127.";
}
identity propPointToPointSerial {
base iana-interface-type;
description
"Proprietary serial.";
}
identity ppp {
base iana-interface-type;
}
identity softwareLoopback {
base iana-interface-type;
}
identity eon {
base iana-interface-type;
description
"CLNP over IP.";
}
identity ethernet3Mbit {
base iana-interface-type;
}
identity nsip {
base iana-interface-type;
description
"XNS over IP.";
}
identity slip {
base iana-interface-type;
description
"Generic SLIP.";
}
identity ultra {
base iana-interface-type;
description
"Ultra Technologies.";
}
identity ds3 {
base iana-interface-type;
description
"DS3-MIB.";
reference
"RFC 3896 - Definitions of Managed Objects for the
DS3/E3 Interface Type";
}
identity sip {
base iana-interface-type;
description
"SMDS, coffee.";
reference
"RFC 1694 - Definitions of Managed Objects for SMDS
Interfaces using SMIv2";
}
identity frameRelay {
base iana-interface-type;
description
"DTE only.";
reference
"RFC 2115 - Management Information Base for Frame Relay
DTEs Using SMIv2";
}
identity rs232 {
base iana-interface-type;
reference
"RFC 1659 - Definitions of Managed Objects for RS-232-like
Hardware Devices using SMIv2";
}
identity para {
base iana-interface-type;
description
"Parallel-port.";
reference
"RFC 1660 - Definitions of Managed Objects for
Parallel-printer-like Hardware Devices using
SMIv2";
}
identity arcnet {
base iana-interface-type;
description
"ARCnet.";
}
identity arcnetPlus {
base iana-interface-type;
description
"ARCnet Plus.";
}
identity atm {
base iana-interface-type;
description
"ATM cells.";
}
identity miox25 {
base iana-interface-type;
reference
"RFC 1461 - SNMP MIB extension for Multiprotocol
Interconnect over X.25";
}
identity sonet {
base iana-interface-type;
description
"SONET or SDH.";
}
identity x25ple {
base iana-interface-type;
reference
"RFC 2127 - ISDN Management Information Base using SMIv2";
}
identity iso88022llc {
base iana-interface-type;
}
identity localTalk {
base iana-interface-type;
}
identity smdsDxi {
base iana-interface-type;
}
identity frameRelayService {
base iana-interface-type;
description
"FRNETSERV-MIB.";
reference
"RFC 2954 - Definitions of Managed Objects for Frame
Relay Service";
}
identity v35 {
base iana-interface-type;
}
identity hssi {
base iana-interface-type;
}
identity hippi {
base iana-interface-type;
}
identity modem {
base iana-interface-type;
description
"Generic modem.";
}
identity aal5 {
base iana-interface-type;
description
"AAL5 over ATM.";
}
identity sonetPath {
base iana-interface-type;
}
identity sonetVT {
base iana-interface-type;
}
identity smdsIcip {
base iana-interface-type;
description
"SMDS InterCarrier Interface.";
}
identity propVirtual {
base iana-interface-type;
description
"Proprietary virtual/internal.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity propMultiplexor {
base iana-interface-type;
description
"Proprietary multiplexing.";
reference
"RFC 2863 - The Interfaces Group MIB";
}
identity ieee80212 {
base iana-interface-type;
description
"100BaseVG.";
}
identity fibreChannel {
base iana-interface-type;
description
"Fibre Channel.";
}
identity hippiInterface {
base iana-interface-type;
description
"HIPPI interfaces.";
}
identity frameRelayInterconnect {
base iana-interface-type;
status obsolete;
description
"Obsolete; use either
frameRelay(32) or frameRelayService(44).";
}
identity aflane8023 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.3.";
}
identity aflane8025 {
base iana-interface-type;
description
"ATM Emulated LAN for 802.5.";
}
identity cctEmul {
base iana-interface-type;
description
"ATM Emulated circuit.";
}
identity fastEther {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity isdn {
base iana-interface-type;
description
"ISDN and X.25.";
reference
"RFC 1356 - Multiprotocol Interconnect on X.25 and ISDN
in the Packet Mode";
}
identity v11 {
base iana-interface-type;
description
"CCITT V.11/X.21.";
}
identity v36 {
base iana-interface-type;
description
"CCITT V.36.";
}
identity g703at64k {
base iana-interface-type;
description
"CCITT G703 at 64Kbps.";
}
identity g703at2mb {
base iana-interface-type;
status obsolete;
description
"Obsolete; see DS1-MIB.";
}
identity qllc {
base iana-interface-type;
description
"SNA QLLC.";
}
identity fastEtherFX {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity channel {
base iana-interface-type;
description
"Channel.";
}
identity ieee80211 {
base iana-interface-type;
description
"Radio spread spectrum.";
}
identity ibm370parChan {
base iana-interface-type;
description
"IBM System 360/370 OEMI Channel.";
}
identity escon {
base iana-interface-type;
description
"IBM Enterprise Systems Connection.";
}
identity dlsw {
base iana-interface-type;
description
"Data Link Switching.";
}
identity isdns {
base iana-interface-type;
description
"ISDN S/T interface.";
}
identity isdnu {
base iana-interface-type;
description
"ISDN U interface.";
}
identity lapd {
base iana-interface-type;
description
"Link Access Protocol D.";
}
identity ipSwitch {
base iana-interface-type;
description
"IP Switching Objects.";
}
identity rsrb {
base iana-interface-type;
description
"Remote Source Route Bridging.";
}
identity atmLogical {
base iana-interface-type;
description
"ATM Logical Port.";
reference
"RFC 3606 - Definitions of Supplemental Managed Objects
for ATM Interface";
}
identity ds0 {
base iana-interface-type;
description
"Digital Signal Level 0.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity ds0Bundle {
base iana-interface-type;
description
"Group of ds0s on the same ds1.";
reference
"RFC 2494 - Definitions of Managed Objects for the DS0
and DS0 Bundle Interface Type";
}
identity bsc {
base iana-interface-type;
description
"Bisynchronous Protocol.";
}
identity async {
base iana-interface-type;
description
"Asynchronous Protocol.";
}
identity cnr {
base iana-interface-type;
description
"Combat Net Radio.";
}
identity iso88025Dtr {
base iana-interface-type;
description
"ISO 802.5r DTR.";
}
identity eplrs {
base iana-interface-type;
description
"Ext Pos Loc Report Sys.";
}
identity arap {
base iana-interface-type;
description
"Appletalk Remote Access Protocol.";
}
identity propCnls {
base iana-interface-type;
description
"Proprietary Connectionless Protocol.";
}
identity hostPad {
base iana-interface-type;
description
"CCITT-ITU X.29 PAD Protocol.";
}
identity termPad {
base iana-interface-type;
description
"CCITT-ITU X.3 PAD Facility.";
}
identity frameRelayMPI {
base iana-interface-type;
description
"Multiproto Interconnect over FR.";
}
identity x213 {
base iana-interface-type;
description
"CCITT-ITU X213.";
}
identity adsl {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop.";
}
identity radsl {
base iana-interface-type;
description
"Rate-Adapt. Digital Subscriber Loop.";
}
identity sdsl {
base iana-interface-type;
description
"Symmetric Digital Subscriber Loop.";
}
identity vdsl {
base iana-interface-type;
description
"Very H-Speed Digital Subscrib. Loop.";
}
identity iso88025CRFPInt {
base iana-interface-type;
description
"ISO 802.5 CRFP.";
}
identity myrinet {
base iana-interface-type;
description
"Myricom Myrinet.";
}
identity voiceEM {
base iana-interface-type;
description
"Voice recEive and transMit.";
}
identity voiceFXO {
base iana-interface-type;
description
"Voice Foreign Exchange Office.";
}
identity voiceFXS {
base iana-interface-type;
description
"Voice Foreign Exchange Station.";
}
identity voiceEncap {
base iana-interface-type;
description
"Voice encapsulation.";
}
identity voiceOverIp {
base iana-interface-type;
description
"Voice over IP encapsulation.";
}
identity atmDxi {
base iana-interface-type;
description
"ATM DXI.";
}
identity atmFuni {
base iana-interface-type;
description
"ATM FUNI.";
}
identity atmIma {
base iana-interface-type;
description
"ATM IMA.";
}
identity pppMultilinkBundle {
base iana-interface-type;
description
"PPP Multilink Bundle.";
}
identity ipOverCdlc {
base iana-interface-type;
description
"IBM ipOverCdlc.";
}
identity ipOverClaw {
base iana-interface-type;
description
"IBM Common Link Access to Workstn.";
}
identity stackToStack {
base iana-interface-type;
description
"IBM stackToStack.";
}
identity virtualIpAddress {
base iana-interface-type;
description
"IBM VIPA.";
}
identity mpc {
base iana-interface-type;
description
"IBM multi-protocol channel support.";
}
identity ipOverAtm {
base iana-interface-type;
description
"IBM ipOverAtm.";
reference
"RFC 2320 - Definitions of Managed Objects for Classical IP
and ARP Over ATM Using SMIv2 (IPOA-MIB)";
}
identity iso88025Fiber {
base iana-interface-type;
description
"ISO 802.5j Fiber Token Ring.";
}
identity tdlc {
base iana-interface-type;
description
"IBM twinaxial data link control.";
}
identity gigabitEthernet {
base iana-interface-type;
status deprecated;
description
"Obsoleted via RFC 3635.
ethernetCsmacd(6) should be used instead.";
reference
"RFC 3635 - Definitions of Managed Objects for the
Ethernet-like Interface Types";
}
identity hdlc {
base iana-interface-type;
description
"HDLC.";
}
identity lapf {
base iana-interface-type;
description
"LAP F.";
}
identity v37 {
base iana-interface-type;
description
"V.37.";
}
identity x25mlp {
base iana-interface-type;
description
"Multi-Link Protocol.";
}
identity x25huntGroup {
base iana-interface-type;
description
"X25 Hunt Group.";
}
identity transpHdlc {
base iana-interface-type;
description
"Transp HDLC.";
}
identity interleave {
base iana-interface-type;
description
"Interleave channel.";
}
identity fast {
base iana-interface-type;
description
"Fast channel.";
}
identity ip {
base iana-interface-type;
description
"IP (for APPN HPR in IP networks).";
}
identity docsCableMaclayer {
base iana-interface-type;
description
"CATV Mac Layer.";
}
identity docsCableDownstream {
base iana-interface-type;
description
"CATV Downstream interface.";
}
identity docsCableUpstream {
base iana-interface-type;
description
"CATV Upstream interface.";
}
identity a12MppSwitch {
base iana-interface-type;
description
"Avalon Parallel Processor.";
}
identity tunnel {
base iana-interface-type;
description
"Encapsulation interface.";
}
identity coffee {
base iana-interface-type;
description
"Coffee pot.";
reference
"RFC 2325 - Coffee MIB";
}
identity ces {
base iana-interface-type;
description
"Circuit Emulation Service.";
}
identity atmSubInterface {
base iana-interface-type;
description
"ATM Sub Interface.";
}
identity l2vlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using 802.1Q.";
}
identity l3ipvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IP.";
}
identity l3ipxvlan {
base iana-interface-type;
description
"Layer 3 Virtual LAN using IPX.";
}
identity digitalPowerline {
base iana-interface-type;
description
"IP over Power Lines.";
}
identity mediaMailOverIp {
base iana-interface-type;
description
"Multimedia Mail over IP.";
}
identity dtm {
base iana-interface-type;
description
"Dynamic synchronous Transfer Mode.";
}
identity dcn {
base iana-interface-type;
description
"Data Communications Network.";
}
identity ipForward {
base iana-interface-type;
description
"IP Forwarding Interface.";
}
identity msdsl {
base iana-interface-type;
description
"Multi-rate Symmetric DSL.";
}
identity ieee1394 {
base iana-interface-type;
description
"IEEE1394 High Performance Serial Bus.";
}
identity if-gsn {
base iana-interface-type;
description
"HIPPI-6400.";
}
identity dvbRccMacLayer {
base iana-interface-type;
description
"DVB-RCC MAC Layer.";
}
identity dvbRccDownstream {
base iana-interface-type;
description
"DVB-RCC Downstream Channel.";
}
identity dvbRccUpstream {
base iana-interface-type;
description
"DVB-RCC Upstream Channel.";
}
identity atmVirtual {
base iana-interface-type;
description
"ATM Virtual Interface.";
}
identity mplsTunnel {
base iana-interface-type;
description
"MPLS Tunnel Virtual Interface.";
}
identity srp {
base iana-interface-type;
description
"Spatial Reuse Protocol.";
}
identity voiceOverAtm {
base iana-interface-type;
description
"Voice over ATM.";
}
identity voiceOverFrameRelay {
base iana-interface-type;
description
"Voice Over Frame Relay.";
}
identity idsl {
base iana-interface-type;
description
"Digital Subscriber Loop over ISDN.";
}
identity compositeLink {
base iana-interface-type;
description
"Avici Composite Link Interface.";
}
identity ss7SigLink {
base iana-interface-type;
description
"SS7 Signaling Link.";
}
identity propWirelessP2P {
base iana-interface-type;
description
"Prop. P2P wireless interface.";
}
identity frForward {
base iana-interface-type;
description
"Frame Forward Interface.";
}
identity rfc1483 {
base iana-interface-type;
description
"Multiprotocol over ATM AAL5.";
reference
"RFC 1483 - Multiprotocol Encapsulation over ATM
Adaptation Layer 5";
}
identity usb {
base iana-interface-type;
description
"USB Interface.";
}
identity ieee8023adLag {
base iana-interface-type;
description
"IEEE 802.3ad Link Aggregate.";
}
identity bgppolicyaccounting {
base iana-interface-type;
description
"BGP Policy Accounting.";
}
identity frf16MfrBundle {
base iana-interface-type;
description
"FRF.16 Multilink Frame Relay.";
}
identity h323Gatekeeper {
base iana-interface-type;
description
"H323 Gatekeeper.";
}
identity h323Proxy {
base iana-interface-type;
description
"H323 Voice and Video Proxy.";
}
identity mpls {
base iana-interface-type;
description
"MPLS.";
}
identity mfSigLink {
base iana-interface-type;
description
"Multi-frequency signaling link.";
}
identity hdsl2 {
base iana-interface-type;
description
"High Bit-Rate DSL - 2nd generation.";
}
identity shdsl {
base iana-interface-type;
description
"Multirate HDSL2.";
}
identity ds1FDL {
base iana-interface-type;
description
"Facility Data Link (4Kbps) on a DS1.";
}
identity pos {
base iana-interface-type;
description
"Packet over SONET/SDH Interface.";
}
identity dvbAsiIn {
base iana-interface-type;
description
"DVB-ASI Input.";
}
identity dvbAsiOut {
base iana-interface-type;
description
"DVB-ASI Output.";
}
identity plc {
base iana-interface-type;
description
"Power Line Communications.";
}
identity nfas {
base iana-interface-type;
description
"Non-Facility Associated Signaling.";
}
identity tr008 {
base iana-interface-type;
description
"TR008.";
}
identity gr303RDT {
base iana-interface-type;
description
"Remote Digital Terminal.";
}
identity gr303IDT {
base iana-interface-type;
description
"Integrated Digital Terminal.";
}
identity isup {
base iana-interface-type;
description
"ISUP.";
}
identity propDocsWirelessMaclayer {
base iana-interface-type;
description
"Cisco proprietary Maclayer.";
}
identity propDocsWirelessDownstream {
base iana-interface-type;
description
"Cisco proprietary Downstream.";
}
identity propDocsWirelessUpstream {
base iana-interface-type;
description
"Cisco proprietary Upstream.";
}
identity hiperlan2 {
base iana-interface-type;
description
"HIPERLAN Type 2 Radio Interface.";
}
identity propBWAp2Mp {
base iana-interface-type;
description
"PropBroadbandWirelessAccesspt2Multipt (use of this value
for IEEE 802.16 WMAN interfaces as per IEEE Std 802.16f
is deprecated, and ieee80216WMAN(237) should be used
instead).";
}
identity sonetOverheadChannel {
base iana-interface-type;
description
"SONET Overhead Channel.";
}
identity digitalWrapperOverheadChannel {
base iana-interface-type;
description
"Digital Wrapper.";
}
identity aal2 {
base iana-interface-type;
description
"ATM adaptation layer 2.";
}
identity radioMAC {
base iana-interface-type;
description
"MAC layer over radio links.";
}
identity atmRadio {
base iana-interface-type;
description
"ATM over radio links.";
}
identity imt {
base iana-interface-type;
description
"Inter-Machine Trunks.";
}
identity mvl {
base iana-interface-type;
description
"Multiple Virtual Lines DSL.";
}
identity reachDSL {
base iana-interface-type;
description
"Long Reach DSL.";
}
identity frDlciEndPt {
base iana-interface-type;
description
"Frame Relay DLCI End Point.";
}
identity atmVciEndPt {
base iana-interface-type;
description
"ATM VCI End Point.";
}
identity opticalChannel {
base iana-interface-type;
description
"Optical Channel.";
}
identity opticalTransport {
base iana-interface-type;
description
"Optical Transport.";
}
identity propAtm {
base iana-interface-type;
description
"Proprietary ATM.";
}
identity voiceOverCable {
base iana-interface-type;
description
"Voice Over Cable Interface.";
}
identity infiniband {
base iana-interface-type;
description
"Infiniband.";
}
identity teLink {
base iana-interface-type;
description
"TE Link.";
}
identity q2931 {
base iana-interface-type;
description
"Q.2931.";
}
identity virtualTg {
base iana-interface-type;
description
"Virtual Trunk Group.";
}
identity sipTg {
base iana-interface-type;
description
"SIP Trunk Group.";
}
identity sipSig {
base iana-interface-type;
description
"SIP Signaling.";
}
identity docsCableUpstreamChannel {
base iana-interface-type;
description
"CATV Upstream Channel.";
}
identity econet {
base iana-interface-type;
description
"Acorn Econet.";
}
identity pon155 {
base iana-interface-type;
description
"FSAN 155Mb Symetrical PON interface.";
}
identity pon622 {
base iana-interface-type;
description
"FSAN 622Mb Symetrical PON interface.";
}
identity bridge {
base iana-interface-type;
description
"Transparent bridge interface.";
}
identity linegroup {
base iana-interface-type;
description
"Interface common to multiple lines.";
}
identity voiceEMFGD {
base iana-interface-type;
description
"Voice E&M Feature Group D.";
}
identity voiceFGDEANA {
base iana-interface-type;
description
"Voice FGD Exchange Access North American.";
}
identity voiceDID {
base iana-interface-type;
description
"Voice Direct Inward Dialing.";
}
identity mpegTransport {
base iana-interface-type;
description
"MPEG transport interface.";
}
identity sixToFour {
base iana-interface-type;
status deprecated;
description
"6to4 interface (DEPRECATED).";
reference
"RFC 4087 - IP Tunnel MIB";
}
identity gtp {
base iana-interface-type;
description
"GTP (GPRS Tunneling Protocol).";
}
identity pdnEtherLoop1 {
base iana-interface-type;
description
"Paradyne EtherLoop 1.";
}
identity pdnEtherLoop2 {
base iana-interface-type;
description
"Paradyne EtherLoop 2.";
}
identity opticalChannelGroup {
base iana-interface-type;
description
"Optical Channel Group.";
}
identity homepna {
base iana-interface-type;
description
"HomePNA ITU-T G.989.";
}
identity gfp {
base iana-interface-type;
description
"Generic Framing Procedure (GFP).";
}
identity ciscoISLvlan {
base iana-interface-type;
description
"Layer 2 Virtual LAN using Cisco ISL.";
}
identity actelisMetaLOOP {
base iana-interface-type;
description
"Acteleis proprietary MetaLOOP High Speed Link.";
}
identity fcipLink {
base iana-interface-type;
description
"FCIP Link.";
}
identity rpr {
base iana-interface-type;
description
"Resilient Packet Ring Interface Type.";
}
identity qam {
base iana-interface-type;
description
"RF Qam Interface.";
}
identity lmp {
base iana-interface-type;
description
"Link Management Protocol.";
reference
"RFC 4327 - Link Management Protocol (LMP) Management
Information Base (MIB)";
}
identity cblVectaStar {
base iana-interface-type;
description
"Cambridge Broadband Networks Limited VectaStar.";
}
identity docsCableMCmtsDownstream {
base iana-interface-type;
description
"CATV Modular CMTS Downstream Interface.";
}
identity adsl2 {
base iana-interface-type;
status deprecated;
description
"Asymmetric Digital Subscriber Loop Version 2
(DEPRECATED/OBSOLETED - please use adsl2plus(238)
instead).";
reference
"RFC 4706 - Definitions of Managed Objects for Asymmetric
Digital Subscriber Line 2 (ADSL2)";
}
identity macSecControlledIF {
base iana-interface-type;
description
"MACSecControlled.";
}
identity macSecUncontrolledIF {
base iana-interface-type;
description
"MACSecUncontrolled.";
}
identity aviciOpticalEther {
base iana-interface-type;
description
"Avici Optical Ethernet Aggregate.";
}
identity atmbond {
base iana-interface-type;
description
"atmbond.";
}
identity voiceFGDOS {
base iana-interface-type;
description
"Voice FGD Operator Services.";
}
identity mocaVersion1 {
base iana-interface-type;
description
"MultiMedia over Coax Alliance (MoCA) Interface
as documented in information provided privately to IANA.";
}
identity ieee80216WMAN {
base iana-interface-type;
description
"IEEE 802.16 WMAN interface.";
}
identity adsl2plus {
base iana-interface-type;
description
"Asymmetric Digital Subscriber Loop Version 2 -
Version 2 Plus and all variants.";
}
identity dvbRcsMacLayer {
base iana-interface-type;
description
"DVB-RCS MAC Layer.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbTdm {
base iana-interface-type;
description
"DVB Satellite TDM.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity dvbRcsTdma {
base iana-interface-type;
description
"DVB-RCS TDMA.";
reference
"RFC 5728 - The SatLabs Group DVB-RCS MIB";
}
identity x86Laps {
base iana-interface-type;
description
"LAPS based on ITU-T X.86/Y.1323.";
}
identity wwanPP {
base iana-interface-type;
description
"3GPP WWAN.";
}
identity wwanPP2 {
base iana-interface-type;
description
"3GPP2 WWAN.";
}
identity voiceEBS {
base iana-interface-type;
description
"Voice P-phone EBS physical interface.";
}
identity ifPwType {
base iana-interface-type;
description
"Pseudowire interface type.";
reference
"RFC 5601 - Pseudowire (PW) Management Information Base (MIB)";
}
identity ilan {
base iana-interface-type;
description
"Internal LAN on a bridge per IEEE 802.1ap.";
}
identity pip {
base iana-interface-type;
description
"Provider Instance Port on a bridge per IEEE 802.1ah PBB.";
}
identity aluELP {
base iana-interface-type;
description
"Alcatel-Lucent Ethernet Link Protection.";
}
identity gpon {
base iana-interface-type;
description
"Gigabit-capable passive optical networks (G-PON) as per
ITU-T G.984.";
}
identity vdsl2 {
base iana-interface-type;
description
"Very high speed digital subscriber line Version 2
(as per ITU-T Recommendation G.993.2).";
reference
"RFC 5650 - Definitions of Managed Objects for Very High
Speed Digital Subscriber Line 2 (VDSL2)";
}
identity capwapDot11Profile {
base iana-interface-type;
description
"WLAN Profile Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapDot11Bss {
base iana-interface-type;
description
"WLAN BSS Interface.";
reference
"RFC 5834 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Binding MIB for
IEEE 802.11";
}
identity capwapWtpVirtualRadio {
base iana-interface-type;
description
"WTP Virtual Radio Interface.";
reference
"RFC 5833 - Control and Provisioning of Wireless Access
Points (CAPWAP) Protocol Base MIB";
}
identity bits {
base iana-interface-type;
description
"bitsport.";
}
identity docsCableUpstreamRfPort {
base iana-interface-type;
description
"DOCSIS CATV Upstream RF Port.";
}
identity cableDownstreamRfPort {
base iana-interface-type;
description
"CATV downstream RF Port.";
}
identity vmwareVirtualNic {
base iana-interface-type;
description
"VMware Virtual Network Interface.";
}
identity ieee802154 {
base iana-interface-type;
description
"IEEE 802.15.4 WPAN interface.";
reference
"IEEE 802.15.4-2006";
}
identity otnOdu {
base iana-interface-type;
description
"OTN Optical Data Unit.";
}
identity otnOtu {
base iana-interface-type;
description
"OTN Optical channel Transport Unit.";
}
identity ifVfiType {
base iana-interface-type;
description
"VPLS Forwarding Instance Interface Type.";
}
identity g9981 {
base iana-interface-type;
description
"G.998.1 bonded interface.";
}
identity g9982 {
base iana-interface-type;
description
"G.998.2 bonded interface.";
}
identity g9983 {
base iana-interface-type;
description
"G.998.3 bonded interface.";
}
identity aluEpon {
base iana-interface-type;
description
"Ethernet Passive Optical Networks (E-PON).";
}
identity aluEponOnu {
base iana-interface-type;
description
"EPON Optical Network Unit.";
}
identity aluEponPhysicalUni {
base iana-interface-type;
description
"EPON physical User to Network interface.";
}
identity aluEponLogicalLink {
base iana-interface-type;
description
"The emulation of a point-to-point link over the EPON
layer.";
}
identity aluGponOnu {
base iana-interface-type;
description
"GPON Optical Network Unit.";
reference
"ITU-T G.984.2";
}
identity aluGponPhysicalUni {
base iana-interface-type;
description
"GPON physical User to Network interface.";
reference
"ITU-T G.984.2";
}
identity vmwareNicTeam {
base iana-interface-type;
description
"VMware NIC Team.";
}
identity docsOfdmDownstream {
base iana-interface-type;
description
"CATV Downstream OFDM interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity docsOfdmaUpstream {
base iana-interface-type;
description
"CATV Upstream OFDMA interface.";
reference
"Cable Modem Operations Support System Interface
Specification";
}
identity gfast {
base iana-interface-type;
description
"G.fast port.";
reference
"ITU-T G.9701";
}
identity sdci {
base iana-interface-type;
description
"SDCI (IO-Link).";
reference
"IEC 61131-9 Edition 1.0 2013-09";
}
identity xboxWireless {
base iana-interface-type;
description
"Xbox wireless.";
}
identity fastdsl {
base iana-interface-type;
description
"FastDSL.";
reference
"BBF TR-355";
}
identity docsCableScte55d1FwdOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Forward Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d1RetOob {
base iana-interface-type;
description
"Cable SCTE 55-1 OOB Return Channel.";
reference
"ANSI/SCTE 55-1 2009";
}
identity docsCableScte55d2DsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Downstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableScte55d2UsOob {
base iana-interface-type;
description
"Cable SCTE 55-2 OOB Upstream Channel.";
reference
"ANSI/SCTE 55-2 2008";
}
identity docsCableNdf {
base iana-interface-type;
description
"Cable Narrowband Digital Forward.";
}
identity docsCableNdr {
base iana-interface-type;
description
"Cable Narrowband Digital Return.";
}
identity ptm {
base iana-interface-type;
description
"Packet Transfer Mode.";
reference
"IEEE G.993.1, Annex H; IEEE G.993.2; IEEE G.9701";
}
identity ghn {
base iana-interface-type;
description
"G.hn port.";
reference
"IEEE G.9961";
}
identity otnOtsi {
base iana-interface-type;
description
"Optical Tributary Signal.";
reference
"ITU-T G.959.1";
}
identity otnOtuc {
base iana-interface-type;
description
"OTN OTUCn.";
reference
"ITU-T G.709/Y.1331";
}
identity otnOduc {
base iana-interface-type;
description
"OTN ODUC.";
reference
"ITU-T G.709";
}
identity otnOtsig {
base iana-interface-type;
description
"OTN OTUC Signal.";
reference
"ITU-T G.709";
}
identity microwaveCarrierTermination {
base iana-interface-type;
description
"air interface of a single microwave carrier.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity microwaveRadioLinkTerminal {
base iana-interface-type;
description
"radio link interface for one or several aggregated microwave carriers.";
reference
"RFC 8561 - A YANG Data Model for Microwave Radio Link";
}
identity ieee8021axDrni {
base iana-interface-type;
description
"IEEE 802.1AX Distributed Resilient Network Interface.";
reference
"IEEE 802.1AX-Rev-d2-0";
}
identity ax25 {
base iana-interface-type;
description
"AX.25 network interfaces.";
reference
"AX.25 Link Access Protocol for Amateur Packet Radio version 2.2";
}
identity ieee19061nanocom {
base iana-interface-type;
description
"Nanoscale and Molecular Communication.";
reference
"IEEE 1906.1-2015";
}
identity cpri {
base iana-interface-type;
description
"Common Public Radio Interface.";
reference
"CPRI v7.0";
}
identity omni {
base iana-interface-type;
description
"Overlay Multilink Network Interface (OMNI).";
reference
"draft-templin-6man-omni-00";
}
identity roe {
base iana-interface-type;
description
"Radio over Ethernet Interface.";
reference
"1914.3-2018 - IEEE Standard for Radio over Ethernet Encapsulations and Mappings";
}
identity p2pOverLan {
base iana-interface-type;
description
"Point to Point over LAN interface.";
reference
"RFC 9296 - ifStackTable for the Point-to-Point (P2P) Interface over a LAN Type: Definition and Examples";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=iana-if-type}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2023-01-26}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}]=SimpleContainerNode{version=Version[78bc70d], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-vlan, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=3.2.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-vlan {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/vlan";
prefix "oc-vlan";
// import some basic types
import openconfig-vlan-types { prefix oc-vlan-types; }
import openconfig-interfaces { prefix oc-if; }
import openconfig-if-ethernet { prefix oc-eth; }
import openconfig-if-aggregate { prefix oc-lag; }
import iana-if-type { prefix ianaift; }
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
netopenconfig@googlegroups.com";
description
"This module defines configuration and state variables for VLANs,
in addition to VLAN parameters associated with interfaces";
oc-ext:openconfig-version "3.2.0";
revision "2019-04-16" {
description
"Update import prefix for iana-if-type module";
reference "3.2.0";
}
revision "2019-01-31" {
description
"Revise QinQ matching and add input/output VLAN stack operations.";
reference "3.1.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "3.0.2";
}
revision "2018-06-05" {
description
"Fix bugs in when statements.";
reference "3.0.1";
}
revision "2018-02-14" {
description
"Fix bug with name of 802.1ad identity.";
reference "3.0.0";
}
revision "2017-07-14" {
description
"Move top-level vlan data to network-instance; Update
identities to comply to style guide; fixed pattern
quoting; corrected trunk vlan types; added TPID config to
base interface.";
reference "2.0.0";
}
revision "2016-05-26" {
description
"OpenConfig public release";
reference "1.0.2";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping vlan-config {
description "VLAN configuration container.";
leaf vlan-id {
type oc-vlan-types:vlan-id;
description "Interface VLAN id.";
}
leaf name {
type string;
description "Interface VLAN name.";
}
leaf status {
type enumeration {
enum ACTIVE {
description "VLAN is active";
}
enum SUSPENDED {
description "VLAN is inactive / suspended";
}
}
default ACTIVE;
description "Admin state of the VLAN";
}
}
grouping vlan-state {
description "State variables for VLANs";
// placeholder
}
grouping vlan-tpid-config {
description
"TPID configuration for dot1q-enabled interfaces";
leaf tpid {
type identityref {
base oc-vlan-types:TPID_TYPES;
}
default oc-vlan-types:TPID_0X8100;
description
"Optionally set the tag protocol identifier field (TPID) that
is accepted on the VLAN";
}
}
grouping vlan-tpid-state {
description
"TPID opstate for dot1q-enabled interfaces";
// placeholder
}
grouping vlan-members-state {
description
"List of interfaces / subinterfaces belonging to the VLAN.";
container members {
description
"Enclosing container for list of member interfaces";
list member {
config false;
description
"List of references to interfaces / subinterfaces
associated with the VLAN.";
uses oc-if:base-interface-ref-state;
}
}
}
grouping vlan-switched-config {
description
"VLAN related configuration that is part of the physical
Ethernet interface.";
leaf interface-mode {
type oc-vlan-types:vlan-mode-type;
description
"Set the interface to access or trunk mode for
VLANs";
}
leaf native-vlan {
when "../interface-mode = 'TRUNK'" {
description
"Native VLAN is valid for trunk mode interfaces";
}
type oc-vlan-types:vlan-id;
description
"Set the native VLAN id for untagged frames arriving on
a trunk interface. Tagged frames sent on an interface
configured with a native VLAN should have their tags
stripped prior to transmission. This configuration is only
valid on a trunk interface.";
}
leaf access-vlan {
when "../interface-mode = 'ACCESS'" {
description
"Access VLAN assigned to the interfaces";
}
type oc-vlan-types:vlan-id;
description
"Assign the access vlan to the access port.";
}
leaf-list trunk-vlans {
when "../interface-mode = 'TRUNK'" {
description
"Allowed VLANs may be specified for trunk mode
interfaces.";
}
type union {
type oc-vlan-types:vlan-id;
type oc-vlan-types:vlan-range;
}
description
"Specify VLANs, or ranges thereof, that the interface may
carry when in trunk mode. If not specified, all VLANs are
allowed on the interface. Ranges are specified in the form
x..y, where x
WG List:
Editor: Martin Bjorklund
";
description
"This module contains a collection of YANG definitions for
managing network interfaces.
Copyright (c) 2018 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(https://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 8343; see
the RFC itself for full legal notices.";
revision 2018-02-20 {
description
"Updated to support NMDA.";
reference
"RFC 8343: A YANG Data Model for Interface Management";
}
revision 2014-05-08 {
description
"Initial revision.";
reference
"RFC 7223: A YANG Data Model for Interface Management";
}
/*
* Typedefs
*/
typedef interface-ref {
type leafref {
path "/if:interfaces/if:interface/if:name";
}
description
"This type is used by data models that need to reference
interfaces.";
}
/*
* Identities
*/
identity interface-type {
description
"Base identity from which specific interface types are
derived.";
}
/*
* Features
*/
feature arbitrary-names {
description
"This feature indicates that the device allows user-controlled
interfaces to be named arbitrarily.";
}
feature pre-provisioning {
description
"This feature indicates that the device supports
pre-provisioning of interface configuration, i.e., it is
possible to configure an interface whose physical interface
hardware is not present on the device.";
}
feature if-mib {
description
"This feature indicates that the device implements
the IF-MIB.";
reference
"RFC 2863: The Interfaces Group MIB";
}
/*
* Data nodes
*/
container interfaces {
description
"Interface parameters.";
list interface {
key "name";
description
"The list of interfaces on the device.
The status of an interface is available in this list in the
operational state. If the configuration of a
system-controlled interface cannot be used by the system
(e.g., the interface hardware present does not match the
interface type), then the configuration is not applied to
the system-controlled interface shown in the operational
state. If the configuration of a user-controlled interface
cannot be used by the system, the configured interface is
not instantiated in the operational state.
System-controlled interfaces created by the system are
always present in this list in the operational state,
whether or not they are configured.";
leaf name {
type string;
description
"The name of the interface.
A device MAY restrict the allowed values for this leaf,
possibly depending on the type of the interface.
For system-controlled interfaces, this leaf is the
device-specific name of the interface.
If a client tries to create configuration for a
system-controlled interface that is not present in the
operational state, the server MAY reject the request if
the implementation does not support pre-provisioning of
interfaces or if the name refers to an interface that can
never exist in the system. A Network Configuration
Protocol (NETCONF) server MUST reply with an rpc-error
with the error-tag 'invalid-value' in this case.
If the device supports pre-provisioning of interface
configuration, the 'pre-provisioning' feature is
advertised.
If the device allows arbitrarily named user-controlled
interfaces, the 'arbitrary-names' feature is advertised.
When a configured user-controlled interface is created by
the system, it is instantiated with the same name in the
operational state.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf description {
type string;
description
"A textual description of the interface.
A server implementation MAY map this leaf to the ifAlias
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifAlias. The definition of
such a mechanism is outside the scope of this document.
Since ifAlias is defined to be stored in non-volatile
storage, the MIB implementation MUST map ifAlias to the
value of 'description' in the persistently stored
configuration.";
reference
"RFC 2863: The Interfaces Group MIB - ifAlias";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
description
"The type of the interface.
When an interface entry is created, a server MAY
initialize the type leaf with a valid value, e.g., if it
is possible to derive the type from the name of the
interface.
If a client tries to set the type of an interface to a
value that can never be used by the system, e.g., if the
type is not supported or if the type does not match the
name of the interface, the server MUST reject the request.
A NETCONF server MUST reply with an rpc-error with the
error-tag 'invalid-value' in this case.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf enabled {
type boolean;
default "true";
description
"This leaf contains the configured, desired state of the
interface.
Systems that implement the IF-MIB use the value of this
leaf in the intended configuration to set
IF-MIB.ifAdminStatus to 'up' or 'down' after an ifEntry
has been initialized, as described in RFC 2863.
Changes in this leaf in the intended configuration are
reflected in ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf link-up-down-trap-enable {
if-feature if-mib;
type enumeration {
enum enabled {
value 1;
description
"The device will generate linkUp/linkDown SNMP
notifications for this interface.";
}
enum disabled {
value 2;
description
"The device will not generate linkUp/linkDown SNMP
notifications for this interface.";
}
}
description
"Controls whether linkUp/linkDown SNMP notifications
should be generated for this interface.
If this node is not configured, the value 'enabled' is
operationally used by the server for interfaces that do
not operate on top of any other interface (i.e., there are
no 'lower-layer-if' entries), and 'disabled' otherwise.";
reference
"RFC 2863: The Interfaces Group MIB -
ifLinkUpDownTrapEnable";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
config false;
mandatory true;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
config false;
mandatory true;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
config false;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
config false;
mandatory true;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
config false;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-ref;
config false;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
config false;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
config false;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
/*
* Legacy typedefs
*/
typedef interface-state-ref {
type leafref {
path "/if:interfaces-state/if:interface/if:name";
}
status deprecated;
description
"This type is used by data models that need to reference
the operationally present interfaces.";
}
/*
* Legacy operational state data nodes
*/
container interfaces-state {
config false;
status deprecated;
description
"Data nodes for the operational state of interfaces.";
list interface {
key "name";
status deprecated;
description
"The list of interfaces on the device.
System-controlled interfaces created by the system are
always present in this list, whether or not they are
configured.";
leaf name {
type string;
status deprecated;
description
"The name of the interface.
A server implementation MAY map this leaf to the ifName
MIB object. Such an implementation needs to use some
mechanism to handle the differences in size and characters
allowed between this leaf and ifName. The definition of
such a mechanism is outside the scope of this document.";
reference
"RFC 2863: The Interfaces Group MIB - ifName";
}
leaf type {
type identityref {
base interface-type;
}
mandatory true;
status deprecated;
description
"The type of the interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifType";
}
leaf admin-status {
if-feature if-mib;
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"Not ready to pass packets and not in some test mode.";
}
enum testing {
value 3;
description
"In some test mode.";
}
}
mandatory true;
status deprecated;
description
"The desired state of the interface.
This leaf has the same read semantics as ifAdminStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifAdminStatus";
}
leaf oper-status {
type enumeration {
enum up {
value 1;
description
"Ready to pass packets.";
}
enum down {
value 2;
description
"The interface does not pass any packets.";
}
enum testing {
value 3;
description
"In some test mode. No operational packets can
be passed.";
}
enum unknown {
value 4;
description
"Status cannot be determined for some reason.";
}
enum dormant {
value 5;
description
"Waiting for some external event.";
}
enum not-present {
value 6;
description
"Some component (typically hardware) is missing.";
}
enum lower-layer-down {
value 7;
description
"Down due to state of lower-layer interface(s).";
}
}
mandatory true;
status deprecated;
description
"The current operational state of the interface.
This leaf has the same semantics as ifOperStatus.";
reference
"RFC 2863: The Interfaces Group MIB - ifOperStatus";
}
leaf last-change {
type yang:date-and-time;
status deprecated;
description
"The time the interface entered its current operational
state. If the current state was entered prior to the
last re-initialization of the local network management
subsystem, then this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifLastChange";
}
leaf if-index {
if-feature if-mib;
type int32 {
range "1..2147483647";
}
mandatory true;
status deprecated;
description
"The ifIndex value for the ifEntry represented by this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifIndex";
}
leaf phys-address {
type yang:phys-address;
status deprecated;
description
"The interface's address at its protocol sub-layer. For
example, for an 802.x interface, this object normally
contains a Media Access Control (MAC) address. The
interface's media-specific modules must define the bit
and byte ordering and the format of the value of this
object. For interfaces that do not have such an address
(e.g., a serial line), this node is not present.";
reference
"RFC 2863: The Interfaces Group MIB - ifPhysAddress";
}
leaf-list higher-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered on top of this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf-list lower-layer-if {
type interface-state-ref;
status deprecated;
description
"A list of references to interfaces layered underneath this
interface.";
reference
"RFC 2863: The Interfaces Group MIB - ifStackTable";
}
leaf speed {
type yang:gauge64;
units "bits/second";
status deprecated;
description
"An estimate of the interface's current bandwidth in bits
per second. For interfaces that do not vary in
bandwidth or for those where no accurate estimation can
be made, this node should contain the nominal bandwidth.
For interfaces that have no concept of bandwidth, this
node is not present.";
reference
"RFC 2863: The Interfaces Group MIB -
ifSpeed, ifHighSpeed";
}
container statistics {
status deprecated;
description
"A collection of interface-related statistics objects.";
leaf discontinuity-time {
type yang:date-and-time;
mandatory true;
status deprecated;
description
"The time on the most recent occasion at which any one or
more of this interface's counters suffered a
discontinuity. If no such discontinuities have occurred
since the last re-initialization of the local management
subsystem, then this node contains the time the local
management subsystem re-initialized itself.";
}
leaf in-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets received on the interface,
including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInOctets";
}
leaf in-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were not addressed to a
multicast or broadcast address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCInUcastPkts";
}
leaf in-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a broadcast
address at this sub-layer.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInBroadcastPkts";
}
leaf in-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The number of packets, delivered by this sub-layer to a
higher (sub-)layer, that were addressed to a multicast
address at this sub-layer. For a MAC-layer protocol,
this includes both Group and Functional addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCInMulticastPkts";
}
leaf in-discards {
type yang:counter32;
status deprecated;
description
"The number of inbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being deliverable to a higher-layer
protocol. One possible reason for discarding such a
packet could be to free up buffer space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInDiscards";
}
leaf in-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of inbound
packets that contained errors preventing them from being
deliverable to a higher-layer protocol. For character-
oriented or fixed-length interfaces, the number of
inbound transmission units that contained errors
preventing them from being deliverable to a higher-layer
protocol.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInErrors";
}
leaf in-unknown-protos {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of packets
received via the interface that were discarded because
of an unknown or unsupported protocol. For
character-oriented or fixed-length interfaces that
support protocol multiplexing, the number of
transmission units received via the interface that were
discarded because of an unknown or unsupported protocol.
For any interface that does not support protocol
multiplexing, this counter is not present.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifInUnknownProtos";
}
leaf out-octets {
type yang:counter64;
status deprecated;
description
"The total number of octets transmitted out of the
interface, including framing characters.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutOctets";
}
leaf out-unicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were not addressed
to a multicast or broadcast address at this sub-layer,
including those that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifHCOutUcastPkts";
}
leaf out-broadcast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
broadcast address at this sub-layer, including those
that were discarded or not sent.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutBroadcastPkts";
}
leaf out-multicast-pkts {
type yang:counter64;
status deprecated;
description
"The total number of packets that higher-level protocols
requested be transmitted and that were addressed to a
multicast address at this sub-layer, including those
that were discarded or not sent. For a MAC-layer
protocol, this includes both Group and Functional
addresses.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB -
ifHCOutMulticastPkts";
}
leaf out-discards {
type yang:counter32;
status deprecated;
description
"The number of outbound packets that were chosen to be
discarded even though no errors had been detected to
prevent their being transmitted. One possible reason
for discarding such a packet could be to free up buffer
space.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutDiscards";
}
leaf out-errors {
type yang:counter32;
status deprecated;
description
"For packet-oriented interfaces, the number of outbound
packets that could not be transmitted because of errors.
For character-oriented or fixed-length interfaces, the
number of outbound transmission units that could not be
transmitted because of errors.
Discontinuities in the value of this counter can occur
at re-initialization of the management system and at
other times as indicated by the value of
'discontinuity-time'.";
reference
"RFC 2863: The Interfaces Group MIB - ifOutErrors";
}
}
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-interfaces}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2018-02-20}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}]=SimpleContainerNode{version=Version[308022c3], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-alarms, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.2}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-alarms {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/alarms";
prefix "oc-alarms";
// import some basic types
import openconfig-alarm-types { prefix oc-alarm-types; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-types { prefix oc-types; }
import openconfig-platform { prefix oc-platform; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines operational state data related to alarms
that the device is reporting.
This model reuses some data items defined in the draft IETF
YANG Alarm Module:
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02
Portions of this code were derived from the draft IETF YANG Alarm
Module. Please reproduce this note if possible.
IETF code is subject to the following copyright and license:
Copyright (c) IETF Trust and the persons identified as authors of
the code.
All rights reserved.
Redistribution and use in source and binary forms, with or without
modification, is permitted pursuant to, and subject to the license
terms contained in, the Simplified BSD License set forth in
Section 4.c of the IETF Trust's Legal Provisions Relating
to IETF Documents (http://trustee.ietf.org/license-info).";
oc-ext:openconfig-version "0.3.2";
revision "2019-07-09" {
description
"Clarify relative base for leaves using timeticks64.";
reference "0.3.2";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2018-01-16" {
description
"Moved alarm identities into separate types module";
reference "0.3.0";
}
revision "2018-01-10" {
description
"Make alarms list read only";
reference "0.2.0";
}
revision "2017-08-24" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// grouping statements
grouping alarm-state {
description
"Operational state data for device alarms";
leaf id {
type string;
description
"Unique ID for the alarm -- this will not be a
configurable parameter on many implementations";
}
leaf resource {
type string;
description
"The item that is under alarm within the device. The
resource may be a reference to an item which is
defined elsewhere in the model. For example, it
may be a platform/component, interfaces/interface,
terminal-device/logical-channels/channel, etc. In this
case the system should match the name of the referenced
item exactly. The referenced item could alternatively be
the path of the item within the model.";
reference
"IETF YANG Alarm Module: Draft - typedef resource
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf text {
type string;
description
"The string used to inform operators about the alarm. This
MUST contain enough information for an operator to be able
to understand the problem. If this string contains structure,
this format should be clearly documented for programs to be
able to parse that information";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-text
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf time-created {
type oc-types:timeticks64;
description
"The time at which the alarm was raised by the system.
This value is expressed relative to the Unix Epoch.";
}
leaf severity {
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_SEVERITY;
}
description
"The severity level indicating the criticality and impact
of the alarm";
reference
"IETF YANG Alarm Module: Draft - typedef severity
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
leaf type-id {
type union {
type string;
type identityref {
base oc-alarm-types:OPENCONFIG_ALARM_TYPE_ID;
}
}
description
"The abbreviated name of the alarm, for example LOS,
EQPT, or OTS. Also referred to in different systems as
condition type, alarm identifier, or alarm mnemonic. It
is recommended to use the OPENCONFIG_ALARM_TYPE_ID
identities where possible and only use the string type
when the desired identityref is not yet defined";
reference
"IETF YANG Alarm Module: Draft - typedef alarm-type-id
https://tools.ietf.org/html/draft-vallin-netmod-alarm-module-02";
}
}
grouping alarm-config {
description
"Configuration data for device alarms";
}
grouping alarms-top {
description
"Top-level grouping for device alarms";
container alarms {
description
"Top-level container for device alarms";
config false;
list alarm {
key "id";
description
"List of alarms, keyed by a unique id";
leaf id {
type leafref {
path "../state/id";
}
description
"References the unique alarm id";
}
container config {
description
"Configuration data for each alarm";
uses alarm-config;
}
container state {
config false;
description
"Operational state data for a device alarm";
uses alarm-config;
uses alarm-state;
}
}
}
}
// augments
augment "/oc-platform:components/oc-platform:component/oc-platform:state" {
description
"Adds specific alarms related to a component.";
leaf equipment-failure {
type boolean;
default "false";
description
"If true, the hardware indicates that the component's physical equipment
has failed";
}
leaf equipment-mismatch {
type boolean;
default "false";
description
"If true, the hardware indicates that the component inserted into the
affected component's physical location is of a different type than what
is configured";
}
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-alarms}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.2}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}]=SimpleContainerNode{version=Version[7a8e9745], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-tacacs, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.5.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=submodule openconfig-aaa-tacacs {
yang-version "1";
belongs-to "openconfig-aaa" {
prefix "oc-aaa";
}
// import some basic types
import openconfig-inet-types { prefix oc-inet; }
import openconfig-extensions { prefix oc-ext; }
import openconfig-aaa-types { prefix oc-aaa-types; }
import openconfig-types { prefix oc-types; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
related to the TACACS+ protocol for authentication,
authorization, and accounting.";
oc-ext:openconfig-version "0.5.0";
revision "2020-07-30" {
description
"Add secret-key-hashed.";
reference "0.5.0";
}
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// extension statements
// feature statements
// identity statements
identity TACACS {
base oc-aaa-types:AAA_SERVER_TYPE;
description
"Terminal Access Controller Access Control System (TACACS+)
AAA server";
reference
"The TACACS+ Protocol (draft-ietf-opsawg-tacacs-05)
RFC 1492 - An Access Control Protocol, Sometimes Called
TACACS";
}
// typedef statements
// grouping statements
grouping aaa-tacacs-server-config {
description
"Configuration data for a TACACS+ server";
leaf port {
type oc-inet:port-number;
default 49;
description
"The port number on which to contact the TACACS server";
}
leaf secret-key {
type oc-types:routing-password;
description
"The unencrypted shared key used between the authentication
server and the device.";
}
leaf secret-key-hashed {
type oc-aaa-types:crypt-password-type;
description
"The hashed shared key used between the authentication
server and the device.";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address to use in messages to the TACACS server";
}
}
grouping aaa-tacacs-server-state {
description
"Operational state data for a TACACS+ server";
}
grouping aaa-tacacs-server-top {
description
"Top-level grouping for TACACS+ sever data";
container tacacs {
description
"Top-level container for TACACS+ server data";
container config {
description
"Configuration data for TACACS+ server";
uses aaa-tacacs-server-config;
}
container state {
config false;
description
"Operational state data for TACACS+ server";
uses aaa-tacacs-server-config;
uses aaa-tacacs-server-state;
}
}
}
// data definition statements
// augment statements
// rpc statements
// notification statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-aaa-tacacs}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.5.0}]}}, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}]=SimpleContainerNode{version=Version[377904e8], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-system-logging, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.3.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-system-logging {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/system/logging";
prefix "oc-log";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
import openconfig-inet-types { prefix oc-inet; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines configuration and operational state data
for common logging facilities on network systems.";
oc-ext:openconfig-version "0.3.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.3.1";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// extension statements
// feature statements
// identity statements
identity SYSLOG_FACILITY {
description
"Base identity for Syslog message facilities.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity ALL {
base SYSLOG_FACILITY;
description
"All supported facilities";
}
identity KERNEL {
base SYSLOG_FACILITY;
description
"The facility for kernel messages";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity USER {
base SYSLOG_FACILITY;
description
"The facility for user-level messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity MAIL {
base SYSLOG_FACILITY;
description
"The facility for the mail system.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSTEM_DAEMON {
base SYSLOG_FACILITY;
description
"The facility for the system daemons.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTH {
base SYSLOG_FACILITY;
description
"The facility for security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity SYSLOG {
base SYSLOG_FACILITY;
description
"The facility for messages generated internally by syslogd
facility.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUTHPRIV {
base SYSLOG_FACILITY;
description
"The facility for privileged security/authorization messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity NTP {
base SYSLOG_FACILITY;
description
"The facility for the NTP subsystem.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity AUDIT {
base SYSLOG_FACILITY;
description
"The facility for log audit messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity CONSOLE {
base SYSLOG_FACILITY;
description
"The facility for log alert messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL0 {
base SYSLOG_FACILITY;
description
"The facility for local use 0 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL1 {
base SYSLOG_FACILITY;
description
"The facility for local use 1 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL2 {
base SYSLOG_FACILITY;
description
"The facility for local use 2 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL3 {
base SYSLOG_FACILITY;
description
"The facility for local use 3 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL4 {
base SYSLOG_FACILITY;
description
"The facility for local use 4 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL5 {
base SYSLOG_FACILITY;
description
"The facility for local use 5 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL6 {
base SYSLOG_FACILITY;
description
"The facility for local use 6 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOCAL7 {
base SYSLOG_FACILITY;
description
"The facility for local use 7 messages.";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
identity LOG_DESTINATION_TYPE {
description
"Base identity for destination for logging messages";
}
identity DEST_CONSOLE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to the console";
}
identity DEST_BUFFER {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to and in-memory circular buffer";
}
identity DEST_FILE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a local file";
}
identity DEST_REMOTE {
base LOG_DESTINATION_TYPE;
description
"Directs log messages to a remote syslog server";
}
// typedef statements
typedef syslog-severity {
type enumeration {
enum EMERGENCY {
description
"Emergency: system is unusable (0)";
}
enum ALERT {
description
"Alert: action must be taken immediately (1)";
}
enum CRITICAL {
description
"Critical: critical conditions (2)";
}
enum ERROR {
description
"Error: error conditions (3)";
}
enum WARNING {
description
"Warning: warning conditions (4)";
}
enum NOTICE {
description
"Notice: normal but significant condition(5)";
}
enum INFORMATIONAL {
description
"Informational: informational messages (6)";
}
enum DEBUG {
description
"Debug: debug-level messages (7)";
}
}
description
"Syslog message severities";
reference
"IETF RFC 5424 - The Syslog Protocol";
}
// grouping statements
grouping logging-selectors-config {
description
"Configuration data for logging selectors";
leaf facility {
type identityref {
base SYSLOG_FACILITY;
}
description
"Specifies the facility, or class of messages to log";
}
leaf severity {
type syslog-severity;
description
"Specifies that only messages of the given severity (or
greater severity) for the corresonding facility are logged";
}
}
grouping logging-selectors-state {
description
"Operational state data for logging selectors";
}
grouping logging-selectors-top {
description
"Top-level grouping for the logging selector list";
container selectors {
description
"Enclosing container ";
list selector {
key "facility severity";
description
"List of selectors for log messages";
leaf facility {
type leafref {
path "../config/facility";
}
description
"Reference to facility list key";
}
leaf severity {
type leafref {
path "../config/severity";
}
description
"Reference to severity list key";
}
container config {
description
"Configuration data ";
uses logging-selectors-config;
}
container state {
config false;
description
"Operational state data ";
uses logging-selectors-config;
uses logging-selectors-state;
}
}
}
}
grouping logging-console-config {
description
"Configuration data for console logging";
}
grouping logging-console-state {
description
"Operational state data for console logging";
}
grouping logging-console-top {
description
"Top-level grouping for console logging data";
container console {
description
"Top-level container for data related to console-based
logging";
container config {
description
"Configuration data for console logging";
uses logging-console-config;
}
container state {
config false;
description
"Operational state data for console logging";
uses logging-console-config;
uses logging-console-state;
}
uses logging-selectors-top;
}
}
grouping logging-remote-config {
description
"Configuration data for remote log servers";
leaf host {
type oc-inet:host;
description
"IP address or hostname of the remote log server";
}
leaf source-address {
type oc-inet:ip-address;
description
"Source IP address for packets to the log server";
}
leaf remote-port {
type oc-inet:port-number;
default 514;
description
"Sets the destination port number for syslog UDP messages to
the server. The default for syslog is 514.";
}
}
grouping logging-remote-state {
description
"Operational state data for remote log servers";
}
grouping logging-remote-top {
description
"Top-level grouping for remote log servers";
container remote-servers {
description
"Enclosing container for the list of remote log servers";
list remote-server {
key "host";
description
"List of remote log servers";
leaf host {
type leafref {
path "../config/host";
}
description
"Reference to the host list key";
}
container config {
description
"Configuration data for remote log servers";
uses logging-remote-config;
}
container state {
config false;
description
"Operational state data for remote log servers";
uses logging-remote-config;
uses logging-remote-state;
}
uses logging-selectors-top;
}
}
}
grouping logging-top {
description
"Top-level grouping for logging data";
container logging {
description
"Top-level container for data related to logging / syslog";
uses logging-console-top;
uses logging-remote-top;
}
}
// data definition statements
// augment statements
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=openconfig-system-logging}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=0.3.1}]}}}, untouched=[ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=gnmi-test-aug, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=1.0.0}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module gnmi-test-aug {
yang-version "1";
namespace "test:aug";
prefix "gta";
import openconfig-extensions { prefix oc-ext; }
import gnmi-test-model {prefix gtm;}
oc-ext:openconfig-version "1.0.0";
augment /gtm:test-data {
leaf interface {
type string;
}
}
augment "/gtm:test-data/gtm:nested-container" {
list interface {
key "name";
description
"The list of named interfaces on the device.";
leaf name {
type string;
}
container config {
leaf name {
type string;
}
leaf type {
type string;
}
leaf mtu {
type uint16;
}
}
}
}
}}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=gnmi-test-aug}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=1.0.0}]}]}}}}}
10:05:32.851 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-28: doCommit completed
10:05:32.851 [main] INFO org.opendaylight.gnmi.southbound.schema.loader.impl.ByClassPathYangLoaderService -- Loaded yang model openconfig-system with version 0.10.0
10:05:32.859 [main] DEBUG org.opendaylight.gnmi.southbound.schema.yangstore.impl.YangDataStoreServiceImpl -- Adding yang model ietf-yang-types with version 2013-07-15 to operational datastore
10:05:32.869 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Write Tx: OPER-29 allocated with snapshot Version[6bc5dbd2]
10:05:32.869 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Tx: OPER-29 Merge: /(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models/gnmi-yang-model/gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2013-07-15}]:ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=ietf-yang-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=2013-07-15}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module ietf-yang-types {
namespace "urn:ietf:params:xml:ns:yang:ietf-yang-types";
prefix "yang";
organization
"IETF NETMOD (NETCONF Data Modeling Language) Working Group";
contact
"WG Web:
WG List:
WG Chair: David Kessens
WG Chair: Juergen Schoenwaelder
Editor: Juergen Schoenwaelder
";
description
"This module contains a collection of generally useful derived
YANG data types.
Copyright (c) 2013 IETF Trust and the persons identified as
authors of the code. All rights reserved.
Redistribution and use in source and binary forms, with or
without modification, is permitted pursuant to, and subject
to the license terms contained in, the Simplified BSD License
set forth in Section 4.c of the IETF Trust's Legal Provisions
Relating to IETF Documents
(http://trustee.ietf.org/license-info).
This version of this YANG module is part of RFC 6991; see
the RFC itself for full legal notices.";
revision 2013-07-15 {
description
"This revision adds the following new data types:
- yang-identifier
- hex-string
- uuid
- dotted-quad";
reference
"RFC 6991: Common YANG Data Types";
}
revision 2010-09-24 {
description
"Initial revision.";
reference
"RFC 6021: Common YANG Data Types";
}
/*** collection of counter and gauge types ***/
typedef counter32 {
type uint32;
description
"The counter32 type represents a non-negative integer
that monotonically increases until it reaches a
maximum value of 2^32-1 (4294967295 decimal), when it
wraps around and starts increasing again from zero.
Counters have no defined 'initial' value, and thus, a
single value of a counter has (in general) no information
content. Discontinuities in the monotonically increasing
value normally occur at re-initialization of the
management system, and at other times as specified in the
description of a schema node using this type. If such
other times can occur, for example, the creation of
a schema node of type counter32 at times other than
re-initialization, then a corresponding schema node
should be defined, with an appropriate type, to indicate
the last discontinuity.
The counter32 type should not be used for configuration
schema nodes. A default statement SHOULD NOT be used in
combination with the type counter32.
In the value set and its semantics, this type is equivalent
to the Counter32 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef zero-based-counter32 {
type yang:counter32;
default "0";
description
"The zero-based-counter32 type represents a counter32
that has the defined 'initial' value zero.
A schema node of this type will be set to zero (0) on creation
and will thereafter increase monotonically until it reaches
a maximum value of 2^32-1 (4294967295 decimal), when it
wraps around and starts increasing again from zero.
Provided that an application discovers a new schema node
of this type within the minimum time to wrap, it can use the
'initial' value as a delta. It is important for a management
station to be aware of this minimum time and the actual time
between polls, and to discard data if the actual time is too
long or there is no defined minimum time.
In the value set and its semantics, this type is equivalent
to the ZeroBasedCounter32 textual convention of the SMIv2.";
reference
"RFC 4502: Remote Network Monitoring Management Information
Base Version 2";
}
typedef counter64 {
type uint64;
description
"The counter64 type represents a non-negative integer
that monotonically increases until it reaches a
maximum value of 2^64-1 (18446744073709551615 decimal),
when it wraps around and starts increasing again from zero.
Counters have no defined 'initial' value, and thus, a
single value of a counter has (in general) no information
content. Discontinuities in the monotonically increasing
value normally occur at re-initialization of the
management system, and at other times as specified in the
description of a schema node using this type. If such
other times can occur, for example, the creation of
a schema node of type counter64 at times other than
re-initialization, then a corresponding schema node
should be defined, with an appropriate type, to indicate
the last discontinuity.
The counter64 type should not be used for configuration
schema nodes. A default statement SHOULD NOT be used in
combination with the type counter64.
In the value set and its semantics, this type is equivalent
to the Counter64 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef zero-based-counter64 {
type yang:counter64;
default "0";
description
"The zero-based-counter64 type represents a counter64 that
has the defined 'initial' value zero.
A schema node of this type will be set to zero (0) on creation
and will thereafter increase monotonically until it reaches
a maximum value of 2^64-1 (18446744073709551615 decimal),
when it wraps around and starts increasing again from zero.
Provided that an application discovers a new schema node
of this type within the minimum time to wrap, it can use the
'initial' value as a delta. It is important for a management
station to be aware of this minimum time and the actual time
between polls, and to discard data if the actual time is too
long or there is no defined minimum time.
In the value set and its semantics, this type is equivalent
to the ZeroBasedCounter64 textual convention of the SMIv2.";
reference
"RFC 2856: Textual Conventions for Additional High Capacity
Data Types";
}
typedef gauge32 {
type uint32;
description
"The gauge32 type represents a non-negative integer, which
may increase or decrease, but shall never exceed a maximum
value, nor fall below a minimum value. The maximum value
cannot be greater than 2^32-1 (4294967295 decimal), and
the minimum value cannot be smaller than 0. The value of
a gauge32 has its maximum value whenever the information
being modeled is greater than or equal to its maximum
value, and has its minimum value whenever the information
being modeled is smaller than or equal to its minimum value.
If the information being modeled subsequently decreases
below (increases above) the maximum (minimum) value, the
gauge32 also decreases (increases).
In the value set and its semantics, this type is equivalent
to the Gauge32 type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef gauge64 {
type uint64;
description
"The gauge64 type represents a non-negative integer, which
may increase or decrease, but shall never exceed a maximum
value, nor fall below a minimum value. The maximum value
cannot be greater than 2^64-1 (18446744073709551615), and
the minimum value cannot be smaller than 0. The value of
a gauge64 has its maximum value whenever the information
being modeled is greater than or equal to its maximum
value, and has its minimum value whenever the information
being modeled is smaller than or equal to its minimum value.
If the information being modeled subsequently decreases
below (increases above) the maximum (minimum) value, the
gauge64 also decreases (increases).
In the value set and its semantics, this type is equivalent
to the CounterBasedGauge64 SMIv2 textual convention defined
in RFC 2856";
reference
"RFC 2856: Textual Conventions for Additional High Capacity
Data Types";
}
/*** collection of identifier-related types ***/
typedef object-identifier {
type string {
pattern '(([0-1](\.[1-3]?[0-9]))|(2\.(0|([1-9]\d*))))'
+ '(\.(0|([1-9]\d*)))*';
}
description
"The object-identifier type represents administratively
assigned names in a registration-hierarchical-name tree.
Values of this type are denoted as a sequence of numerical
non-negative sub-identifier values. Each sub-identifier
value MUST NOT exceed 2^32-1 (4294967295). Sub-identifiers
are separated by single dots and without any intermediate
whitespace.
The ASN.1 standard restricts the value space of the first
sub-identifier to 0, 1, or 2. Furthermore, the value space
of the second sub-identifier is restricted to the range
0 to 39 if the first sub-identifier is 0 or 1. Finally,
the ASN.1 standard requires that an object identifier
has always at least two sub-identifiers. The pattern
captures these restrictions.
Although the number of sub-identifiers is not limited,
module designers should realize that there may be
implementations that stick with the SMIv2 limit of 128
sub-identifiers.
This type is a superset of the SMIv2 OBJECT IDENTIFIER type
since it is not restricted to 128 sub-identifiers. Hence,
this type SHOULD NOT be used to represent the SMIv2 OBJECT
IDENTIFIER type; the object-identifier-128 type SHOULD be
used instead.";
reference
"ISO9834-1: Information technology -- Open Systems
Interconnection -- Procedures for the operation of OSI
Registration Authorities: General procedures and top
arcs of the ASN.1 Object Identifier tree";
}
typedef object-identifier-128 {
type object-identifier {
pattern '\d*(\.\d*){1,127}';
}
description
"This type represents object-identifiers restricted to 128
sub-identifiers.
In the value set and its semantics, this type is equivalent
to the OBJECT IDENTIFIER type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef yang-identifier {
type string {
length "1..max";
pattern '[a-zA-Z_][a-zA-Z0-9\-_.]*';
pattern '.|..|[^xX].*|.[^mM].*|..[^lL].*';
}
description
"A YANG identifier string as defined by the 'identifier'
rule in Section 12 of RFC 6020. An identifier must
start with an alphabetic character or an underscore
followed by an arbitrary sequence of alphabetic or
numeric characters, underscores, hyphens, or dots.
A YANG identifier MUST NOT start with any possible
combination of the lowercase or uppercase character
sequence 'xml'.";
reference
"RFC 6020: YANG - A Data Modeling Language for the Network
Configuration Protocol (NETCONF)";
}
/*** collection of types related to date and time***/
typedef date-and-time {
type string {
pattern '\d{4}-\d{2}-\d{2}T\d{2}:\d{2}:\d{2}(\.\d+)?'
+ '(Z|[\+\-]\d{2}:\d{2})';
}
description
"The date-and-time type is a profile of the ISO 8601
standard for representation of dates and times using the
Gregorian calendar. The profile is defined by the
date-time production in Section 5.6 of RFC 3339.
The date-and-time type is compatible with the dateTime XML
schema type with the following notable exceptions:
(a) The date-and-time type does not allow negative years.
(b) The date-and-time time-offset -00:00 indicates an unknown
time zone (see RFC 3339) while -00:00 and +00:00 and Z
all represent the same time zone in dateTime.
(c) The canonical format (see below) of data-and-time values
differs from the canonical format used by the dateTime XML
schema type, which requires all times to be in UTC using
the time-offset 'Z'.
This type is not equivalent to the DateAndTime textual
convention of the SMIv2 since RFC 3339 uses a different
separator between full-date and full-time and provides
higher resolution of time-secfrac.
The canonical format for date-and-time values with a known time
zone uses a numeric time zone offset that is calculated using
the device's configured known offset to UTC time. A change of
the device's offset to UTC time will cause date-and-time values
to change accordingly. Such changes might happen periodically
in case a server follows automatically daylight saving time
(DST) time zone offset changes. The canonical format for
date-and-time values with an unknown time zone (usually
referring to the notion of local time) uses the time-offset
-00:00.";
reference
"RFC 3339: Date and Time on the Internet: Timestamps
RFC 2579: Textual Conventions for SMIv2
XSD-TYPES: XML Schema Part 2: Datatypes Second Edition";
}
typedef timeticks {
type uint32;
description
"The timeticks type represents a non-negative integer that
represents the time, modulo 2^32 (4294967296 decimal), in
hundredths of a second between two epochs. When a schema
node is defined that uses this type, the description of
the schema node identifies both of the reference epochs.
In the value set and its semantics, this type is equivalent
to the TimeTicks type of the SMIv2.";
reference
"RFC 2578: Structure of Management Information Version 2
(SMIv2)";
}
typedef timestamp {
type yang:timeticks;
description
"The timestamp type represents the value of an associated
timeticks schema node at which a specific occurrence
happened. The specific occurrence must be defined in the
description of any schema node defined using this type. When
the specific occurrence occurred prior to the last time the
associated timeticks attribute was zero, then the timestamp
value is zero. Note that this requires all timestamp values
to be reset to zero when the value of the associated timeticks
attribute reaches 497+ days and wraps around to zero.
The associated timeticks schema node must be specified
in the description of any schema node using this type.
In the value set and its semantics, this type is equivalent
to the TimeStamp textual convention of the SMIv2.";
reference
"RFC 2579: Textual Conventions for SMIv2";
}
/*** collection of generic address types ***/
typedef phys-address {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"Represents media- or physical-level addresses represented
as a sequence octets, each octet represented by two hexadecimal
numbers. Octets are separated by colons. The canonical
representation uses lowercase characters.
In the value set and its semantics, this type is equivalent
to the PhysAddress textual convention of the SMIv2.";
reference
"RFC 2579: Textual Conventions for SMIv2";
}
typedef mac-address {
type string {
pattern '[0-9a-fA-F]{2}(:[0-9a-fA-F]{2}){5}';
}
description
"The mac-address type represents an IEEE 802 MAC address.
The canonical representation uses lowercase characters.
In the value set and its semantics, this type is equivalent
to the MacAddress textual convention of the SMIv2.";
reference
"IEEE 802: IEEE Standard for Local and Metropolitan Area
Networks: Overview and Architecture
RFC 2579: Textual Conventions for SMIv2";
}
/*** collection of XML-specific types ***/
typedef xpath1.0 {
type string;
description
"This type represents an XPATH 1.0 expression.
When a schema node is defined that uses this type, the
description of the schema node MUST specify the XPath
context in which the XPath expression is evaluated.";
reference
"XPATH: XML Path Language (XPath) Version 1.0";
}
/*** collection of string types ***/
typedef hex-string {
type string {
pattern '([0-9a-fA-F]{2}(:[0-9a-fA-F]{2})*)?';
}
description
"A hexadecimal string with octets represented as hex digits
separated by colons. The canonical representation uses
lowercase characters.";
}
typedef uuid {
type string {
pattern '[0-9a-fA-F]{8}-[0-9a-fA-F]{4}-[0-9a-fA-F]{4}-'
+ '[0-9a-fA-F]{4}-[0-9a-fA-F]{12}';
}
description
"A Universally Unique IDentifier in the string representation
defined in RFC 4122. The canonical representation uses
lowercase characters.
The following is an example of a UUID in string representation:
f81d4fae-7dec-11d0-a765-00a0c91e6bf6
";
reference
"RFC 4122: A Universally Unique IDentifier (UUID) URN
Namespace";
}
typedef dotted-quad {
type string {
pattern
'(([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])\.){3}'
+ '([0-9]|[1-9][0-9]|1[0-9][0-9]|2[0-4][0-9]|25[0-5])';
}
description
"An unsigned 32-bit number expressed in the dotted-quad
notation, i.e., four octets written as decimal numbers
and separated with the '.' (full stop) character.";
}
}
}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name, body=ietf-yang-types}, ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version, body=2013-07-15}]}
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.spi.store.SnapshotBackedWriteTransaction -- Store transaction: OPER-29 : Ready
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMDataStore -- Tx: OPER-29 is submitted. Modifications: InMemoryDataTreeModification{state=Ready}
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.broker.SerializedDOMDataBroker -- Tx: DOM-29 is submitted for execution.
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-29: canCommit Started
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.store.inmemory.InMemoryDOMStoreThreePhaseCommitCohort -- Store Transaction: OPER-29 can be committed
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-29: preCommit Started
10:05:32.870 [main] DEBUG org.opendaylight.mdsal.dom.broker.CommitCoordinationTask -- Transaction DOM-29: doCommit Started
10:05:32.870 [main] DEBUG org.opendaylight.yangtools.yang.data.tree.impl.InMemoryDataTree -- Updating datastore from MaterializedContainerNode{version=Version[7400397b], subtreeVersion=Version[6bc5dbd2], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-models=MaterializedContainerNode{version=Version[40300c67], subtreeVersion=Version[6bc5dbd2], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model=LazyContainerNode{version=Version[40300c67], subtreeVersion=Version[6bc5dbd2], children={(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}]=SimpleContainerNode{version=Version[225f8852], data=ImmutableMapEntryNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)gnmi-yang-model[{(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)name=openconfig-aaa-types, (urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)version=0.4.1}], body=[ImmutableLeafNode{name=(urn:opendaylight:gnmi:yang:storage?revision=2021-03-31)body, body=module openconfig-aaa-types {
yang-version "1";
// namespace
namespace "http://openconfig.net/yang/aaa/types";
prefix "oc-aaa-types";
// import some basic types
import openconfig-extensions { prefix oc-ext; }
// meta
organization "OpenConfig working group";
contact
"OpenConfig working group
www.openconfig.net";
description
"This module defines shared types for data related to AAA
(authentication, authorization, accounting).";
oc-ext:openconfig-version "0.4.1";
revision "2018-11-21" {
description
"Add OpenConfig module metadata extensions.";
reference "0.4.1";
}
revision "2018-04-12" {
description
"Add when conditions, correct identities";
reference "0.4.0";
}
revision "2017-09-18" {
description
"Updated to use OpenConfig types modules";
reference "0.3.0";
}
revision "2017-07-06" {
description
"Move to oc-inet types, add IETF attribution, add RADIUS
counters, changed password leaf names to indicate hashed";
reference "0.2.0";
}
revision "2017-01-29" {
description
"Initial public release";
reference "0.1.0";
}
// OpenConfig specific extensions for module metadata.
oc-ext:regexp-posix;
oc-ext:catalog-organization "openconfig";
oc-ext:origin "openconfig";
// identity statements
identity AAA_SERVER_TYPE {
description
"Base identity for types of AAA servers";
}
identity SYSTEM_DEFINED_ROLES {
description
"Base identity for system_defined roles that can be assigned
to users.";
}
identity SYSTEM_ROLE_ADMIN {
base SYSTEM_DEFINED_ROLES;
description
"Built-in role that allows the equivalent of superuser
permission for all configuration and operational commands
on the device.";
}
identity AAA_ACCOUNTING_EVENT_TYPE {
description
"Base identity for specifying events types that should be
sent to AAA server for accounting";
}
identity AAA_ACCOUNTING_EVENT_COMMAND {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies interactive command events for AAA accounting";
}
identity AAA_ACCOUNTING_EVENT_LOGIN {
base AAA_ACCOUNTING_EVENT_TYPE;
description
"Specifies login events for AAA accounting";
}
identity AAA_AUTHORIZATION_EVENT_TYPE {
description
"Base identity for specifying activities that should be
sent to AAA server for authorization";
}
identity AAA_AUTHORIZATION_EVENT_COMMAND {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies interactive command events for AAA authorization";
}
identity AAA_AUTHORIZATION_EVENT_CONFIG {
base AAA_AUTHORIZATION_EVENT_TYPE;
description
"Specifies configuration (e.g., EXEC) events for AAA
authorization";
}
identity AAA_METHOD_TYPE {
description
"Base identity to define well-known methods for AAA
operations";
}
identity TACACS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all TACACS+ servers.";
}
identity RADIUS_ALL {
base AAA_METHOD_TYPE;
description
"The group of all RADIUS servers.";
}
identity LOCAL {
base AAA_METHOD_TYPE;
description
"Locally configured method for AAA operations.";
}
// typedef statements
typedef crypt-password-type {
type string;
description
"A password that is hashed based on the hash algorithm
indicated by the prefix in the string. The string
takes the following form, based on the Unix crypt function:
$